//
//ViewController.m
//CocoTest_1
//
//Created by S u p e r m a n on 2017/3/14.
//Copyright ? 2017年張浩. All rights reserved.
//
#import"ViewController.h"
staticintcount =1;
@interfaceViewController()
@end
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
chessAction(4);
}
/**
問(wèn)題描述:有2n個(gè)棋子排成一行液荸,白子用0代表忍弛,黑子用1代表川梅。n=5的狀態(tài)為:
0000011111_ _ (右邊至少兩個(gè)空位)
移動(dòng)規(guī)則:
(1)每次必須移動(dòng)相鄰的兩個(gè)棋子,這兩個(gè)棋子不能互換位置
(2)移動(dòng)的顏色不限,移動(dòng)的方向不限
要求:
最后成為_(kāi) _ 0101010101的狀態(tài)(中間無(wú)空格)傀缩。
*/
voidchessAction(intn) {
if(n <4) {
return;
}elseif(n ==4) {//遞歸結(jié)束的
//當(dāng)遞歸到規(guī)模為4的時(shí)候
//00001111__
//0123456789
//1:000__11101
printf("第%d步:%d&%d和空格(%d&%d)交換\n",count++,3,4,8,9);
//2:0001011__1
printf("第%d步:%d&%d和空格(%d&%d)交換\n",count++,7,8,3,4);
//3:0__1011001
printf("第%d步:%d&%d和空格(%d&%d)交換\n",count++,1,2,7,8);
//4:010101__01
printf("第%d步:%d&%d和空格(%d&%d)交換\n",count++,6,7,1,2);
//5:__01010101
printf("第%d步:%d&%d和空格(%d&%d)交換\n",count++,0,1,6,7);
}else{
//開(kāi)始遞歸
//把規(guī)模為n的問(wèn)題轉(zhuǎn)化成規(guī)模為n-1的問(wèn)題
//1.把第n-1和n和空格(2n,2n+1)交換
printf("第%d步:%d&%d和空格(%d&%d)交換\n",count++,n-1,n,2*n,2*n+1);
//2.把第2n-2和2n-2和空格(n-1,n)交換
printf("第%d步:%d&%d和空格(%d&%d)交換\n",count++,2*n-2,2*n-2,n-1,n);
//經(jīng)過(guò)上步操作變成了問(wèn)題為n-1的規(guī)模
chessAction(n-1);
}
}@end