一、心得
二、题目和分析
三、代码和结果
1 #include <iostream> 2 using namespace std; 3 4 int n; 5 int step=0; 6 char ans[101]; 7 int sp; 8 9 void print(){ 10 cout<<"step"<<step<<":"; 11 for(int i=1;i<=2*n+2;i++) cout<<ans[i]; 12 cout<<endl; 13 step++; 14 } 15 16 void init(int n){ 17 for(int i=1;i<=n;i++) ans[i]=‘o‘; 18 for(int i=n+1;i<=2*n;i++) ans[i]=‘*‘; 19 for(int i=2*n+1;i<=2*n+2;i++) ans[i]=‘-‘; 20 print(); 21 sp=2*n+1; 22 } 23 24 void move(int k){ 25 for(int i=0;i<=1;i++){ 26 ans[sp+i]=ans[k+i]; 27 ans[k+i]=‘-‘;// 28 } 29 sp=k; 30 print();// 31 } 32 33 void mv(int n){ 34 if(n==4){ 35 move(4),move(8),move(2),move(7),move(1); 36 } 37 else{ 38 move(n),move(2*n-1),mv(n-1); 39 } 40 } 41 42 int main(){ 43 cin>>n; 44 init(n); 45 mv(n); 46 return 0; 47 }
原文:http://www.cnblogs.com/Renyi-Fan/p/7135800.html