标签:blog can 分析 str 黑白 输入 div cout 情况
1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 using namespace std; 5 int n,nowp,num; 6 char c[100]; 7 void init(int);//初始化 8 void move(int);//移动 9 void mov(int);//移动的方案 10 int print();//输出 11 int main() 12 { 13 scanf("%d",&n); 14 init(n);//初始化 15 mov(n);//怎么移动 16 return 0; 17 } 18 int print() 19 { 20 cout<<"step "<<num<<":"; 21 for(int i=1;i<=2*n+2;i++)//输出 22 cout<<c[i]; 23 cout<<endl; 24 num++; 25 } 26 void init(int n) 27 { 28 nowp=n*2+1;//有‘-’的第一个位置,也就是可以将棋子移到这个位置 29 for(int i=1;i<=n;i++)c[i]=‘o‘;//初始化 30 for(int i=n+1;i<=2*n;i++)c[i]=‘*‘; 31 c[n*2+1]=‘-‘;c[n*2+2]=‘-‘; 32 print(); 33 } 34 void mov(int n)//移动的方案 35 { 36 if(n==4)//如果是4*2个棋子 37 { 38 move(4);move(8);move(2);move(7);move(1);//先移动第四个位置和第五个位置,再移动第8,9... 39 } 40 else 41 { 42 move(n);move(2*n-1);mov(n-1);//前两个语句完成后,剩下棋子排列相当于移动n-1个棋子的方案 43 } 44 } 45 void move(int n) 46 { 47 for(int i=0;i<=1;i++) 48 { 49 c[nowp+i]=c[n+i];//现在有空格的位置被移动来棋子代替 50 c[n+i]=‘-‘;//移动后的位置变为‘-’; 51 } 52 nowp=n;//现在的位置要改变 **** 53 print(); 54 }
标签:blog can 分析 str 黑白 输入 div cout 情况
原文地址:http://www.cnblogs.com/zzyh/p/6623490.html