急急急!!!!工厂有七位工人,按要求出勤,用C编

来源:百度知道 编辑:UC知道 时间:2024/06/30 07:54:29
工厂有A、B、C、D、E、F、G七位工人,
在一星期内(星期一至星期天)每人要轮流值班一天。
现在已知:
A工人比C工人晚一天值班;
D工人比E工人晚二天值班;
B工人比G工人早三天值班;
F工人的值班日在B和C工人的中间,且是星期四;
请确定每天究竟是哪位工人值班?
提示一:
对于该问题,可以限定没有跨周的情况发生;
提示二:
在编程时用数组元素的下标1到7表示A~G七位工人,
用数组元素的值分别表示星期一到星期天

0-6分别对应周一到周日
那么A+B+C+D+E+F+G=0+1+2+3+4+5+6=21
G = B+3;
A = C+1;
D = E+2;
根据以上条件可以得到E = 6-B-C

void main()
{
int A,B,C,D,E,F,G;
F = 3;
bool FindFlag = false;
for (B=0; B<F && FindFlag==false; B++)
{
for (C=F+1; C<=6 && FindFlag==false; C++)
{
E = 6-B-C;
if ( E >6 || E==B || E==C || E==3)
{
continue;
}
G = B+3;
A = C+1;
D = E+2;
if ( D!=B && D!=C && D!=F && D!=G && D!=A && D<=6)
{
FindFlag =true;
printf("A:%d B:%d C:%d D:%d E:%d F:%d G:%d \n",A,B,C,D,E,F,G);
break;
}
}
}
}

悬赏太少 没人肯帮你做的 除非有人不怕累

答案应该是
C A B F E G D

#include <stdio.h>
int main()
{
int a[7],i,j;
a[5]=4;
bool Temp=true;//a[0]到a[6]是否不同
for(a[0]=1;a[0]<=7;a[0]+=1)
for(a[1]=1;a