文章
52
粉丝
68
获赞
22
访问
11.6k
这里根据本题,提供两个约瑟夫问题的题解,我们依靠动态链接库里面的向量辅助处理,方便的处理中间的的元素的删除,当然,如果你的学校不支持这个,我建议你采用循环链表,标记0位置即可达到同样的目的
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m;
while(cin>>n>>m){
vector<int>a(n);
for(int i=0;i<n;i++){
a[i]=i+1;
}
int p=0;
m=m-1;
while(a.size()>1){
p=p+m>=a.size()?(p+m)%a.size():p+m;
a.erase(a.begin()+p);
}
cout<<a[0]<<endl;
}
}
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,p,m;
while(cin>>n>>p>>m){
vector<int>a(n);
for(int i=0;i<n;i++){
a[i]=i+1;
}
p=p-1;
m=m-1;
string ans="";
while(a.size()>1){
p=p+m>=a.size()?(p+m)%a.size():p+m;
char c=a[p]+'0';
ans=ans+c+',';
...
登录后发布评论
暂无评论,来抢沙发