要知道什么是‘递归|

2c237c6

园龄:1年4个月粉丝:2关注:0

写的让我最服的代码

题目描述 

在给定的数组中删除一个数。 

详细看牛客

然后我给出代码给大家看看

#include<bits/stdc++.h>
using namespace std;

int main(){
    int m,n;
    while(cin>>m){
    vector<int> vec;
    for (int i = 1; i <= m; i++) {
    int num;
    cin >> num;
    vec.push_back(num);
}
    cin >> n;
    for (auto it = vec.begin(); it != vec.end(); ) {
    if (*it == n) {
        it = vec.erase(it);
        break;
    } else {
        it++;
    }
}
    //vector<int>::iterator i
    for(int i=0;i<m-1;i++){
        cout<<vec[i]<<" ";
    }
        cout<<"\n";
    }
    return 0;
}

 一开始看代码是没有是什么问题的可是在提交的时候却是错误的

大家还是先看我的思路

这段代码是一个简单的程序,它读取多组输入,并通过删除数组中指定值的元素后输出结果。

首先,在`main()`函数中定义了两个整数变量`m`和`n`,用于保存用户输入的数值。

然后,进入一个`while`循环,条件是通过`cin`读取到的`m`的值。这意味着会一直读取输入,直到输入不符合整数类型为止。

在每次循环开始时,创建一个空的整型向量`vec`,用于存储用户输入的整数。

接下来,使用一个`for`循环,从1循环到`m`次,读取`m`个整数,并通过`vec.push_back(num)`将它们添加到向量`vec`中。

然后,通过`cin`读取`n`的值,表示要删除的指定元素。

接下来,使用一个迭代器遍历向量`vec`。如果当前迭代器指向的元素等于`n`,则使用`vec.erase(it)`函数将该元素从向量中删除,并使用 `break` 关键字退出循环。

如果迭代器指向的元素不等于`n`,则通过`it++`将迭代器移动到下一个位置,并继续进行下一次迭代。

最后,使用一个`for`循环从0循环到`m-1`,遍历向量`vec`并输出其中的元素(去掉了刚刚删除的元素),同时在每个元素后面输出一个空格。

最后,输出一个换行符,完成本次循环的输出过程。

这样循环执行,直到输入不再满足`cin>>m`的条件,即用户停止输入,程序结束运行。

但是我忘记了有种可能就是找不道我们想要的数

正确的代码要加上

//前面的it=vec.erase(it);的循环要加a=1的条件

for(int i=0;i<(a==0?m:m-1);i++)

//然后每次循环要更新a

a=0

然后就这样因为一小问题,就浪费我100个小时(夸张),反正有点长>

本文作者:2c237c6

本文链接:https://www.cnblogs.com/27dCnc/p/18568695

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   2c237c6  阅读(2)  评论(0编辑  收藏  举报  
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起