这是因为在删除元素后,没有更新index的值。在删除一个元素后,原本在该元素之后的元素都向前移动了一位,但是index的值没有随之更新,导致下一次循环时,index指向了错误的位置。为了解决这个问题,可以在删除元素后,将index的值更新为index-1。修改后的代码如下:

#include <iostream>
#include <vector>
using namespace std;
int main(){
    int n,k;
    cin>>n>>k;
    vector<int> people(n);
    vector<int> res;
    int count=0;
    int index=0;
    for(int i=0;i<n;i++){
        people[i]=i+1;
    }
    while(!people.empty()){
        count++;
        index=(index+1)%people.size();
        if(count==k){
            res.push_back(people[index]);
            people.erase(people.begin()+index);
            count=0;
            index--;
        }

    }
    for(int i=0;i<res.size();i++){
        cout<<res[i]<<" ";
    }
    cout<< endl;
    return 0;
}

这样修改后,输入5和3时,输出结果就是正确的3 1 5 2 4

#include iostream#include vectorusing namespace std;int main	int nk;	cinnk;	vectorint peoplen;	vectorint res;	int count=0;	int index=0;	forint i=0;in;i++		peoplei=i+1;		while!peopleempty		count++;		in

原文地址: http://www.cveoy.top/t/topic/hQpt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录