值班问题,求大神们看看错哪呢?有没有其他简单点的方法啊??
题目:医院有A、B、C、D、E、F、G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。
现在已知:
A大夫比C大夫晚一天值班;
D大夫比E大夫晚二天值班;
B大夫比G大夫早三天值班;
F大夫的值班日在B和C大夫的中间,且是星期四;
请确定每天究竟是哪位大夫值班?
我写的程序,(用循环做的)不过不能运行,求指教,求简单的方法!!!
#include<stdio.h>
int compare(int a[],int n);
void main()
{
int A,B,C,D,E,F,G;
int a[7];
for(A=1;A<=7;A++)
for(B=1;B<=7;B++)
for(C=1;C<=7;C++)
for(D=1;D<=7;D++)
for(E=1;E<=7;E++)
for(F=1;F<=7;F++)
for(G=1;G<=7;G++)
{
if(((C-A)==1)&&((D-E)==2)&&((G-B)==3)&&((F>B&&F<C)||(F>C&&F<B)))
{
a[7]={A,B,C,D,E,F,G};
if(compare(a,7))
{
printf("A-星期%d\n",A);
printf("B-星期%d\n",B);
printf("C-星期%d\n",C);
printf("D-星期%d\n",D);
printf("E-星期%d\n",E);
printf("F-星期%d\n",F);
printf("G-星期%d\n",G);
}
}
}
}
int compare(int a[],int n)--------------------自定义函数,检验七个数各不相同
{
int i,x,j;
for(i=0;i<n;i++)
{
j=i+1;
x=a[i];
while(x!=a[j]&&j<6)
j++;
if(x==a[j])
{
return 0;
break;
}
}
return 1;
}