1145: 零起点学算法52——数组中删数II

时间:2023-03-10 00:13:09
1145: 零起点学算法52——数组中删数II

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 1145: 零起点学算法52——数组中删数II

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 ;
}