題目描述
魔法世界的歷史上曾經出現過一位赫赫有名的不敗戰神陳慶之,陳慶之以棋道悟兵法,一生身經數百戰,沒有一場敗績,而且沒有一場不是在絕對的劣勢中大勝敵軍。
受此影響,魔法世界開始流行一種叫棋子移動的遊戲,即有2N個棋子(N≥4)排成一行,開始位置爲白子全部在左邊,黑子全部在右邊,例如當N=4時,棋子排列情況爲:
〇〇〇〇●●●●
移動棋子的規則是:每次必須同時移動相鄰兩個棋子,顏色不限,可以左移也可以右移到空位上去,但不能調換兩個棋子的左右位置.每次移動必須跳過若干個棋子(不能平移),要求最後能移成黑白相間的一行棋子。例如當N=4時,最終排列情況爲:
〇●〇●〇●〇●
試求出移動步驟。
輸入
一個整數,即N。
輸出
輸出移動步驟,每一步操作佔一行。
樣例輸入
4
樣例輸出
4,5–>9,10
8,9–>4,5
2,3–>8,9
7,8–>2,3
1,2–>7,8
主要是找規律
#include <iostream> #include <stdio.h> #include <algorithm> using namespace std; int fun(int n) { for(int i=n;i>4;i--){ printf("%d,%d-->%d,%d\n",i,i+1,2*i+1,2*i+2); printf("%d,%d-->%d,%d\n",2*i-1,2*i,i,i+1); } return 0; } int main() { int a[5][4]={{4,5,9,10}, {8,9,4,5}, {2,3,8,9}, {7,8,2,3}, {1,2,7,8} }; int n; scanf("%d",&n); fun(n); for(int i=0;i<5;i++) printf("%d,%d-->%d,%d\n",a[i][0],a[i][1],a[i][2],a[i][3]); }