棋子移动的游戏_棋子移动的游戏

棋子移动的游戏_棋子移动的游戏这道题比较难 题目描述: 有2n个棋子(n≥4)排成一行,开始位置为白色全部在左边,黑色全部在右边。(其中字母O表示白色棋子,字母X表示黑色棋子)OOOOXXXX。移动棋子的规则是:每次必须同时移动相邻两个棋子,颜色不限,可以左移也可以右移一空位上去,但不能调换两个棋子的左右位,每次移动必须跳过若干

这道题比较难

题目描述:

有2n个棋子(n≥4)排成一行,开始位置为白色全部在左边,黑色全部在右边。(其中字母O表示白色棋子,字母X表示黑色棋子)OOOOXXXX。移动棋子的规则是:每次必须同时移动相邻两个棋子,颜色不限,可以左移也可以右移一空位上去,但不能调换两个棋子的左右位,每次移动必须跳过若干个棋子(不能平移),要求最后能够移成黑白相间的一行棋子。例如当n=4时,最终排列情况为:OXOXOXOX。输出棋子移动的过程。

输入描述:

多组输入,每组一个正整数,占一行。

输出描述:

输出移动步骤,每一步操作占一行

样例输入:

4

样例输出:

4,5–>9,10

8,9–>4,5

2,3–>8,9

7,8–>2,3

1,2–>7,8

棋子移动的游戏_棋子移动的游戏
棋子移动的游戏_棋子移动的游戏

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 using namespace std;
 5 int n,mj,mi,x,y;
 6 char a[101];
 7 void move(int i)
 8 {
 9     a[mj] = a[i];
10     a[mj + 1] = a[i + 1];
11     a[i] = '-';
12     a[i + 1] = '-';
13     mj = i;
14     for(i = 0; i < 2 * n + 2; i++)
15         //printf("%c", a[i]);
16         if(a[i]=='-'){
17             cout<<i+1<<","<<i+2<<"-->"<<x<<","<<y;
18             x=i+1;
19             y=i+2;
20             break;
21         }
22     printf("\n");
23 }
24 void fun(int n)
25 {
26     if (n == 4){        
27         move(3);move(7); 
28         move(1);move(6);
29         move(0);
30     }
31     else{
32         move(n - 1);
33         move(2 * n - 2);
34         fun(n - 1);
35     }
36 }
37 int main()
38 {
39     int i, j;
40     while(cin>>n){
41         mi = 1;
42         mj = 2* n;
43         for(i = 0; i < n; i++)
44             a[i] = 'o';
45      
46         for(i = n; i < 2 * n; i++)
47             a[i] = '*';
48         a[2*n] = '-';
49         a[2*n + 1] = '-';
50         x=2*n+1;
51         y=2*n+2;
52         fun(n);
53     }
54     return 0;
55 }

signal

 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 using namespace std; 5 int n, mj; 6 int mi; 7 char a[101]; 8 void move(int i) 9 {10     a[mj] = a[i];11     a[mj + 1] = a[i + 1];12     a[i] = '-';13     a[i + 1] = '-';14     mj = i;15     printf("step%2d:", mi++);16     for(i = 0; i < 2 * n + 2; i++)17         printf("%c", a[i]);18     printf("\n");19 }20 void fun(int n)21 {22     if (n == 4){        23         move(3);move(7); 24         move(1);move(6);25         move(0);26     }27     else{28         move(n - 1);29         move(2 * n - 2);30         fun(n - 1);31     }32 }33 int main()34 {35     int i, j;36     scanf("%d", &n);37     mi = 1;38     mj = 2* n;39     for(i = 0; i < n; i++)40         a[i] = 'o';41  42     for(i = n; i < 2 * n; i++)43         a[i] = '*';44  45     a[2*n] = '-';46     a[2*n + 1] = '-';47     printf("step%2d:", 0);48     for(i = 0; i < 2 * n + 2; i++)49         printf("%c", a[i]);50     puts("");51     fun(n);52     return 0;53 }

 

今天的文章棋子移动的游戏_棋子移动的游戏分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/51045.html

(0)
编程小号编程小号
上一篇 2023-09-01 16:46
下一篇 2023-09-01

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注