|
|
@ -0,0 +1,97 @@
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int n = 0;
|
|
|
|
|
|
|
|
int rest[7][7];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void swap(int *a, int *b)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
int m;
|
|
|
|
|
|
|
|
m = *a;
|
|
|
|
|
|
|
|
*a = *b;
|
|
|
|
|
|
|
|
*b = m;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void perm(int list[], int k, int m)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
int j;
|
|
|
|
|
|
|
|
if(k > m)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (i=0; i<7; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for (j=0; j<7; j++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (rest[i][j] == 0)
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
if (rest[i][j] != list[i])
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
if (rest[i][j] == list[i])
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n++;
|
|
|
|
|
|
|
|
printf("Solution: %d\n", n);
|
|
|
|
|
|
|
|
printf("钱 赵 孙 李 周 吴 陈\n");
|
|
|
|
|
|
|
|
printf("=============================================================\n");
|
|
|
|
|
|
|
|
for(i = 0; i <= m; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
switch (list[i])
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
case 1: printf("星期一 ");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 2: printf("星期二 ");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 3: printf("星期三 ");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 4: printf("星期四 ");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 5: printf("星期五 ");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 6: printf("星期六 ");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 7: printf("星期日 ");
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
printf("\n\n\n");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
for(i = k; i <= m; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
swap(&list[k], &list[i]);
|
|
|
|
|
|
|
|
perm(list, k + 1, m);
|
|
|
|
|
|
|
|
swap(&list[k], &list[i]);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
printf("注意:\n");
|
|
|
|
|
|
|
|
printf(" 1.请按钱、赵、孙、李、周、吴、陈的顺序输入休息每个人的时间。\n");
|
|
|
|
|
|
|
|
printf(" 2.输入星期时,请直接输入数字,如要输入'星期一',就用'1'代替,以此类推。\n");
|
|
|
|
|
|
|
|
printf(" 3.星期与星期之间用空格隔开,每输入完一个人的休息日,在其后输入0,再按回车继续下一人。\n");
|
|
|
|
|
|
|
|
printf("\n");
|
|
|
|
|
|
|
|
int list[] = {1, 2, 3, 4, 5, 6, 7};
|
|
|
|
|
|
|
|
int i, j;
|
|
|
|
|
|
|
|
for(i = 0; i < 7; i++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
printf("请输入第 %d 个人的休息时间:\n", i+1);
|
|
|
|
|
|
|
|
for(j = 0; j < 7; j++)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
scanf("%d", &rest[i][j]);
|
|
|
|
|
|
|
|
if(rest[i][j] == 0)
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
printf("\n\n\n");
|
|
|
|
|
|
|
|
perm(list, 0, 6);
|
|
|
|
|
|
|
|
getchar();
|
|
|
|
|
|
|
|
printf("输出完毕,按回车键结束!\n");
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|