c语言程序翻译,急

发布网友 发布时间:2022-04-23 22:54

我来回答

1个回答

热心网友 时间:2023-10-18 13:43

学校实验楼有7名保安人员:钱、赵、孙、李、周、吴、陈。由于工作需要进行轮休制度,一星期中每人休息一天。预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案。当然使每个人都满意,例如每人选择的休息日如下:
钱:星期一、星期六
赵:星期二、星期四
孙:星期三、星期日
李:星期五
周:星期一、星期四、星期六
吴:星期二、星期五
陈:星期三、星期六、星期日
运行结果:
Solution: 1 赵 钱 孙 李 周 吴 陈 =============================================================
星期四 星期一 星期三 星期五 星期六 星期二 星期日
Solution: 2 赵 钱 孙 李 周 吴 陈 =============================================================
星期四 星期一 星期日 星期五 星期六 星期二 星期三
Solution: 3 赵 钱 孙 李 周 吴 陈 =============================================================
星期四 星期六 星期三 星期五 星期一 星期二 星期日
Solution: 4 赵 钱 孙 李 周 吴 陈 =============================================================
星期四 星期六 星期日 星期五 星期一 星期二 星期三
#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] == -1)
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()
{
int list[] = {1, 2, 3, 4, 5, 6, 7};
int i, j;
for(i = 0; i < 7; i++)
{
printf("Enter the day of %d people rests:\n", i+1);
for(j = 0; j < 7; j++)
{
scanf("%d", &rest[i][j]);
if(rest[i][j] == -1)
break;
}
}
printf("\n\n\n");
perm(list, 0, 6);
printf("total:%d\n", n);
getchar();
getchar();
return 0;
}

学校实验楼有7名保安人员:。钱,赵,孙,李,周,吴,陈由于工作需要进行轮休制度,一星期中每人休息一天预先让每一个人选择自己认为合适的休息日。请编制程序,打印轮休的所有可能方案当然使每个人都满意,例如每人选择的休息日如下:
钱:星期一,星期六
赵:星期二,星期四
孙:星期三,星期日
李:星期五
周:星期一,星期四,星期六
吴:星期二,星期五
陈:星期三,星期六,星期日
运行结果:
解决方案:1赵钱孙李周吴陈================================== =====================
星期四星期一星期三星期五星期六星期二星期日
解决方案:2赵钱孙李周吴陈================================== =====================
星期四星期一星期二星期五
解决方案:3赵钱孙李周吴陈================================== =====================
星期四星期六星期三星期五星期一星期二星期日
解决方案:4赵钱孙李周吴陈================================== =====================
星期四星期六星期二星期五星期一星期二星期三
#include <stdio.h>
int n = 0;
休息[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
如果(k> m)
{
for(i = 0; i <7; i ++)
{
for(j = 0; j <7; j ++)
{
if(rest [i] [j] == -1)
返回;
if(rest [i] [j]!= list [i])
继续;
if(rest [i] [j] == list [i])
打破;
}
}
的n ++;
printf(“解决方案:%d \ n”,n);
printf(“赵钱孙李周吴陈\ n”);
的printf(“=============================================== ============== \ n“);
for(i = 0; i <= m; i ++)
{
switch(list [i])
{
案例1:printf(“星期一”);
打破;
情况2:printf(“星期二”);
打破;
案例3:printf(“星期三”);
打破;
情况4:printf(“星期四”);
打破;
情况5:printf(“星期五”);
打破;
情况6:printf(“星期六”);
打破;
案例7:printf(“星期日”);
打破;
默认:
打破;
}
}
的printf( “\ n \ n \ n”);
}
其他
{
for(i = k; i <= m; i ++)
{
交换(&list [k],&list [i]);
perm(list,k + 1,m);
交换(&list [k],&list [i]);
}
}
}
int main()
{
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] == -1)
打破;
}
}
的printf( “\ n \ n \ n”);
perm(list,0,6);
printf(“total:%d \ n”,n);
的getchar();
的getchar();
返回0;
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com