#include<iostream>
using namespace std;
int r[200];
int main(){
int m=6,n=2;
for (int i=1;i<m;i++)r[i]=i+1;
r[m]=1;
int i=0,p=1,k;
bool b=true;
while(b){
i++;k=p;p=r[p];
if(k==p){
cout<<p<<endl;b=false;
}else if(i==n+1){
cout<<p<<' ';
i=0;p=r[p];r[k]=p;
}
}
return 0;
}
这个代码的答案我知道,但他的第三个数一直算不对,以下是我总结:
第一个回合:r[1]=2;
第二个回合:r[2]=3;
第三个回合:r[3]=4;
第四个回合:r[4]=5;
第五个回合:r[5]=6;
第六个回合:r[6]=1;
i=0,p=1,r[1]=2;r[2]=3;r[3]=4;r[4]=5;r[5]=6;r[6]=1;
第一个回合:i=1,k=1,p=2,输出:
第二个回合:i=2,k=2,p=3, 输出:
第三个回合:i=3,k=3,p=4, 输出:4,空格,
i=0;p=5;r[3]=4;
第四个回合:i=1,k=5,p=6, 输出:
第五个回合:i=2,k=6,p=1, 输出:
第六个回合:i=3,k=1,p=2, 输出:2 空格,
i=0;p=3;r[1]=2,
第七个回合:i=1,k=2,p=4, 输出:
第八个回合:i=2,k=3,p=5, 输出:
第九个回合:i=3,k=4,p=6, 输出:
帮我看看算错在哪?
答案:4 2 1 3 6 5 |
|