C语言四个教室用三种颜色染色且相邻教室不能用同种颜色的代码
时间: 2024-09-28 15:13:26 浏览: 19
在C语言中,为了实现这个需求,我们可以使用数组或者结构体来表示教室,以及一个二维数组或者枚举类型来记录颜色分配。这里给出一个简单的示例代码:
```c
#include <stdio.h>
typedef enum {RED, GREEN, BLUE} Color; // 定义颜色枚举
// 假设有4个教室,用数组表示
int rooms[4] = {0, 0, 0, 0}; // 初始设置为未染色
void assign_colors(int n_rooms, Color *color_arr) {
for (int i = 0; i < n_rooms; i++) {
if (color_arr[i] == RED) continue; // 如果是红色,跳过
if (i > 0 && color_arr[i - 1] == color_arr[i]) continue; // 检查前一个是否相同颜色,相同则跳过
// 颜色循环,保证相邻教室颜色不同
for (Color c = RED; c != color_arr[i]; c = (c + 1) % 3) {
color_arr[i] = c;
break; // 找到第一个可用的颜色并退出内层循环
}
}
}
int main() {
assign_colors(4, rooms);
for (int i = 0; i < 4; i++) {
printf("教室%d 颜色: %s\n", i+1, rooms[i] == RED ? "红色" : rooms[i] == GREEN ? "绿色" : "蓝色");
}
return 0;
}
```
在这个例子中,`assign_colors`函数负责给每个教室分配颜色,并确保相邻教室颜色不同。程序会打印出每个教室的最终颜色。