1145: 零起点学算法52——数组中删数II
Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lldSubmitted: 2935 Accepted: 793
[Submit][Status][Web Board]
Description
在给定的数组中删除数
Input
多组测试,每组第一行输入1个整数n(n<20),然后是n个整数
第二行输入1个整数m
Output
删除在第一行的n个整数中的数字m(多个的话都要删除),然后按照顺序输出剩下的数。如果该数组中所有数均被删除,请直接输出换行
Sample Input
5 1 2 3 4 3
3
Sample Output
1 2 4
Source
1 #include<stdio.h> 2 int main(){ 3 int n,a[20]; 4 while(scanf("%d",&n)!=EOF){ 5 for(int i=0;i<n;i++){ 6 scanf("%d",&a[i]); 7 } 8 9 int m,t,cout=0; 10 scanf("%d",&m); 11 for(int i=0;i<n;i++){ 12 if(m==a[i]){ 13 t=a[i]; 14 a[i]=a[i+1]; 15 a[i+1]=t; 16 cout++; 17 } 18 } 19 20 for(int i=0;i<n-cout;i++){ 21 printf("%d ",a[i]); 22 } 23 printf("%d ",a[n-cout]); 24 } 25 return 0; 26 }
改正后AC代码:
1 #include<stdio.h> 2 int main(){ 3 int n,a[20],b[20]; 4 while(scanf("%d",&n)!=EOF){ 5 for(int i=0;i<n;i++){ 6 scanf("%d",&a[i]); 7 } 8 int m,j=0; 9 scanf("%d",&m); 10 for(int i=0;i<n;i++){ 11 if(m!=a[i]){ 12 b[j]=a[i]; 13 j++; 14 } 15 } 16 if(j==0) 17 printf(" "); 18 else{ 19 for(int i=0;i<j-1;i++){ 20 printf("%d ",b[i]); 21 } 22 printf("%d ",b[j-1]); 23 } 24 } 25 return 0; 26 }