100人排队,奇数去除,剩下再排队,奇数去除如此反复,剩下最后1人的编号是什么?用c#写
时间: 2023-12-23 14:03:09 浏览: 53
以下是使用 C# 语言编写的代码:
```csharp
public static int LastOneStanding(int n)
{
List<int> queue = new List<int>();
for (int i = 1; i <= n; i++)
{
queue.Add(i);
}
while (queue.Count > 1)
{
List<int> newQueue = new List<int>();
for (int i = 0; i < queue.Count; i += 2)
{
if (queue[i] % 2 == 0)
{
newQueue.Add(queue[i]);
}
}
queue = newQueue;
}
return queue[0];
}
```
在这个函数中,我们首先将所有人的编号放入一个列表中。然后,我们使用 while 循环来反复进行“奇数去除”的操作,直到列表中只剩下最后一个人。在每次循环中,我们创建一个新的列表 newQueue,然后遍历原始列表 queue 中的每个数字。如果这个数字是偶数,则将其加入 newQueue 中。在循环结束后,我们将 newQueue 赋值给 queue,然后继续下一次循环。
最后,我们返回列表中唯一剩下的数字,即最后一个人的编号。注意,这个函数的参数 n 表示的是最初有多少人,而不是最终剩下多少人。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)