零起点学算法83——数组中删数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零起点学算法83——数组中删数相关的知识,希望对你有一定的参考价值。

Description
在给定的数组中删除一个数
Input
多组测试,每组第一行输入1个整数n(n<20),然后是n个整数 第二行输入1个整数m
Output
删除在第一行的n个整数中第一次出现数字m并删除,然后按照顺序输出剩下的数,
Sample Input
4 1 2 3 4
3
Sample Output
1 2 4
HINT
m有可能在原数组中找不到,找不到则输出原数组
Source

新手求这题代码。。。
我写的 输入题目答案对了。。但不知哪错了,不能AC。。。太复杂了吗?

#include <iostream>
using namespace std;
int main()

int a[20];
int m;
int i=0;
cout<<"Input the Number";
for (i=0;i<20;i++)

cin>>a[i];

cout<<endl;
cout<<"Input Your Delete Number:";
cin>>m;
for (int j=0;j<19;j++)

a[j]=a[j+1];

for (int k=0;k<=19;k++)

cout<<a[k]<<endl;

int count;
for (int j=0;j<19;j++)

if (a[j]==m)

count=j;
break;


while(count<19)

a[count]=a[count+1];
count++;

cout<<endl;
cout<<"JieGuo:"<<endl;
for (int j=0;j<18;j++)

cout<<a[j]<<endl;

return 0;


你可以修改一下,这样的话,看看能否实现你说的那个算法。或许你还可以有自己的其他的比我的算法更好的算法。我已经尽力了。
参考技术A 要试着自己实现代码,, 别人实现,对你没有帮助的!追问

可是我AC不了。。。

追答

t初始化成 -1 , 试试,,

追问

不对。。TAT

追答

找到t 之后, 输出这样输出:

for( i=0; i<n; ++i)

    if(i==t)   continue;
    printf("%d",a[i]);

printf("\\n");

你把你的括号放在单独一行,这样阅读起来方便

追问

不行啊。。

追答

就不改你的代码了,我写一个。   我没测试过, 但是大概思路是着样的

int n,a[22], m, id, i;    bool flg=true;
scanf("%d",&n);  // 输入n
for(int i=0; i<n; ++i)    // 输入 数组
    scanf("%d",&a[i]);
 scanf("%d",&m);   // 输入m
 id=-1;   // 记录查找到m的下标
 for i=0; i<n; ++i)   // 查找m, 并记录位置到 id
 
     if(a[i]==m)
        id=i; break;  
 

 for(int i=0; i<n-1; ++i)
 
     if(i==id) continue;   // 如果下标为id  则表示为m 不输出
      if(flg)
         printf("%d ",a[i]), flg=false;   // 第一次输出没有空格
     else 
         printf(" %d",a[i]);     // 之后输出有空格
 
 printf("\\n");

本回答被提问者采纳

Problem C: 零起点学算法82——数组中查找数

#include <stdio.h>

int main(int argc, char *argv[])
{
    int n,b,i,m,flag=0,a[20];
    while(scanf("%d",&n)!=EOF){
        for(i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        scanf("%d",&m);
        for(i=0;i<n;i++){
        if(a[i]==m){
            b=i;
            flag=1;
            break;
         }
        }
        if(flag==1){
        printf("%d ",b);
        }
        else{
        printf("No ");
        }
        flag=0;
    }
    return 0;
}

以上是关于零起点学算法83——数组中删数的主要内容,如果未能解决你的问题,请参考以下文章

1144: 零起点学算法51——数组中删数

1145: 零起点学算法52——数组中删数II (有问题!)

1143: 零起点学算法50——数组中查找数

1146: 零起点学算法53——数组中插入一个数

1142: 零起点学算法49——找出数组中最大元素的位置(下标值)

1153: 零起点学算法60——元素前移1位