题目:
某公司有7名保安人员:赵、钱、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制一程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:
赵:星期二、星期四
钱:星期一、星期六
孙:星期三、星期日
李:星期五
周:星期一、星期四、星期六
吴:星期二、星期五
陈:星期三、星期六、星期日
代码如下:
\*编译时出现100多错误,实在不知道怎么改:请大家帮帮忙~!*\
#include <stdio.h>
#include <string.h>
const char name[7][3] =
{
{"赵"}, {"钱"}, {"孙"}, {"李"}, {"周"}, {"吴"}, {"陈"}
};
int peace[7][8] = {0};
int week[7] = {0};
void dfs(int c)
{
int i;
if (c >= 7)
{
printf("\n");
for (i = 0 ; i < 7 ; i++)
printf("星期%d:%s\n", i+1, name[week[i] - 1]);
}
else
{
for (i = 1 ; i <= peace[c][0] ; i++)
{
if (!week[peace[c][i]])
{
week[peace[c][i]] = c + 1;
dfs(c + 1);
week[peace[c][i]] = 0;
}
}
}
}
int main(void)
{
int i, j, n;
printf("请输入各保安休假情况(0为工作,1为休假)\n");
for (i = 0 ; i < 7 ; i++)
{
printf("%s:", name[i]);
for (j = 0 ; j < 7 ; j++)
{
scanf("%d", &n);
if (n) peace[i][++peace[i][0]] = j;
}
}
dfs(0);
return 0;
}