消灭星星查找相同星星的递归代码c++
时间: 2023-08-24 20:40:43 浏览: 86
以下是消灭星星游戏中查找相同星星位置的递归代码示例,使用C++语言实现:
```c++
#include <iostream>
#define MAXN 100
int n; // 游戏面板的行数和列数
char board[MAXN][MAXN]; // 游戏面板数组
// 递归查找相邻的相同星星
void dfs(int x, int y, char c)
{
if (x < 0 || x >= n || y < 0 || y >= n) return; // 越界
if (board[x][y] != c) return; // 不是相同的星星
board[x][y] = '#'; // 标记为已访问过
dfs(x + 1, y, c); // 向右查找
dfs(x - 1, y, c); // 向左查找
dfs(x, y + 1, c); // 向下查找
dfs(x, y - 1, c); // 向上查找
}
// 查找相同星星的入口函数
bool findSameStars()
{
bool flag = false; // 是否找到相同的星星
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (board[i][j] != '#') // 如果该星星未被访问过
{
char c = board[i][j]; // 记录该位置的星星颜色
dfs(i, j, c); // 递归查找相邻的相同星星
flag = true; // 找到了相同的星星
}
}
}
return flag;
}
int main()
{
// 读入游戏面板
std::cout << "请输入游戏面板的行数和列数:";
std::cin >> n;
std::cout << "请输入游戏面板,用字母表示不同颜色的星星:" << std::endl;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
std::cin >> board[i][j];
}
}
int count = 0; // 统计找到的相同星星组数
while (findSameStars())
{
count++;
// 将已经标记过的星星从游戏面板中删除
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (board[i][j] == '#') board[i][j] = '-';
}
}
}
std::cout << "一共找到了 " << count << " 组相同的星星!" << std::endl;
return 0;
}
```
在这段代码中,使用dfs函数递归地查找相邻的相同星星。每次查找到一个相同星星时,将其标记为已访问过,然后继续向该星星四周查找相同星星。当所有相同星星都被标记过后,退出递归函数,返回到findSameStars函数中。在findSameStars函数中,如果找到了相同的星星,则将已经标记过的星星从游戏面板中删除,并继续查找相同星星。如果没有找到相同的星星,则退出while循环,输出统计结果。
相关推荐
![](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)