1145: 零起点学算法52——数组中删数II
Time Limit: 1 Sec Memory Limit: 64 MB 64bit IO Format: %lld
Submitted: 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
#include<stdio.h>
int main(){
int n,a[];
while(scanf("%d",&n)!=EOF){
for(int i=;i<n;i++){
scanf("%d",&a[i]);
} int m,t,cout=;
scanf("%d",&m);
for(int i=;i<n;i++){
if(m==a[i]){
t=a[i];
a[i]=a[i+];
a[i+]=t;
cout++;
}
} for(int i=;i<n-cout;i++){
printf("%d ",a[i]);
}
printf("%d\n",a[n-cout]);
}
return ;
}
改正后AC代码:
#include<stdio.h>
int main(){
int n,a[],b[];
while(scanf("%d",&n)!=EOF){
for(int i=;i<n;i++){
scanf("%d",&a[i]);
}
int m,j=;
scanf("%d",&m);
for(int i=;i<n;i++){
if(m!=a[i]){
b[j]=a[i];
j++;
}
}
if(j==)
printf("\n");
else{
for(int i=;i<j-;i++){
printf("%d ",b[i]);
}
printf("%d\n",b[j-]);
}
}
return ;
}