commit
eac4ebd8f3
@ -0,0 +1,77 @@
|
||||
#include "stdio.h"
|
||||
int n=0;
|
||||
int rest[7][7];//休息的可能时间、
|
||||
void swap(int *a,int *b)//实现交换
|
||||
{
|
||||
int m;
|
||||
m=*a; *a=*b;
|
||||
*b=m;
|
||||
}
|
||||
//0 6
|
||||
void perm(int list[],int k,int m)//把输入的每个人的可能休息时间传给函数、
|
||||
{
|
||||
int i; int j;
|
||||
if(k>m)//当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");
|
||||
}
|
||||
else//当K<=m的时候
|
||||
{
|
||||
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};//一周的7天、
|
||||
int i,j;
|
||||
char ss[7][20]={"赵","钱","孙","李","周","吴","陈"};
|
||||
printf("============================ 欢 迎 使 用 排 班 系 统 ============================");
|
||||
printf("请输入下列人选择休息的可能时间:\n");
|
||||
for(i=0;i<7;i++)
|
||||
{
|
||||
printf("%s: ",ss[i]);
|
||||
for(j=0;j<7;j++)//输入可能的休息时间、
|
||||
{
|
||||
scanf("%d",&rest[i][j]);
|
||||
if(rest[i][j]==-1) break;//当输入的休息时间位-1时、开始下一个人的可能休息时间
|
||||
}
|
||||
}
|
||||
printf("\n\n\n");
|
||||
perm(list,0,6);
|
||||
getchar();
|
||||
getchar();//getchar()函数也会获取你输入的回车字符'\n'
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in new issue