#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
这是因为在删除元素后,没有更新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
原文地址: http://www.cveoy.top/t/topic/hQpt 著作权归作者所有。请勿转载和采集!