蜗蜗很喜欢玩一个游戏:一共有三个不透明的杯子,倒扣着在桌面上排成一排,只有中间那个杯子里面有一个小球,然后不断地快速交换杯子的位置(里面的球跟着杯子一起动),最后让别人猜球到底在哪个位置上。现在小蜗蜗想让你帮他完成移动杯子的动作,并悄悄告诉你他只会交换kk次杯子的位置,然后他会将交换哪两个杯子的指令告诉你,最后请你找出球在哪个位置。 输入格式 第一行一个整数kk。 接下来一共kk行。每一行包含两个整数a,ba,b,a,ba,b都在11到33之间并且它们不相等,表示将从左往右的第aa个杯子和从左往右的第bb个杯子交换。 输出格式 输出一个整数,在11到33之间,表示现在球在从左往右的第几个杯子底下。注意,一开始小球在中间那个杯子里,也就是从左往右的第22个杯子。
时间: 2023-02-08 22:24:19 浏览: 448
这道题的思路就是:刚开始球在第二个杯子里,每次交换的时候就把球的位置记录下来。最后输出球最后停留的位置。
你可以使用一个数组来记录球的位置。每次交换的时候,就交换两个杯子的位置,并且把球的位置也同时更新。
举个例子:
假如刚开始球在第二个杯子里,也就是数组的第二个位置,球的位置数组就是:[0, 1, 0]
然后给出交换杯子的指令,交换第一个和第三个,那么杯子的位置数组就变成:[1, 0, 1]
然后再给出交换杯子的指令,交换第二个和第三个,那么杯子的位置数组就变成:[1, 1, 0]
最后输出数组中值为1的位置就是球停留的位置。
代码如下:
```
int k;
cin >> k;
int a[3] = {0, 1, 0}; // 初始化球的位置数组
while (k--) {
int a1, b1;
cin >> a1 >> b1;
// 交换杯子的位置
swap(a[a1 - 1], a[b1 - 1]);
}
// 输出球最后停留的位置
for (int i = 0; i < 3; i++) {
if (a[i] == 1) {
cout << i + 1 << endl;
break;
}
}
```
阅读全文