first commit

master
hzp 6 years ago
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…
Cancel
Save