我写的C++程序,写的复杂了。哪位高手给简化下?

来源:百度知道 编辑:UC知道 时间:2024/07/05 08:07:53
/*55.哪个大夫哪天值班
医院有A、B、C、D、E、F、G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。现在已知:
A大夫比C大夫晚一天值班;
D大夫比E大夫晚二天值班;
B大夫比G大夫早三天值班;
F大夫的值班日在B和C大夫的中间,且是星期四;
请确定每天究竟是哪位大夫值班?*/
#include <iostream>
using namespace std;

void main()
{
int iA;
int iB;
int iC;
int iD;
int iE;
int iF;
int iG;

iF = 4;

for (iA=1;iA<=7;iA++)
{
for (iB=1;iB<=7;iB++)
{
for (iC=1;iC<=7;iC++)
{
for (iD=1;iD<=7;iD++)
{
for (iE=1;iE<=7;iE++)
{
for (iG=1;iG<=7;iG++)
{
if ((iA-iC == 1)&&(iD-iE == 2)&&(iG-iB == 3)&&(iF>iB&&iF<iC)&&(iA!=iB&&iA!=iC&&iA!=iE&&iA!=iF&&iA!=iG&&iB!=iC&&iB!=iD&&iB!=iE&&iB!=iF&&iB!=iG&&iC!=iD&&iC!=iE&&iC!=iF&&iC!=iG&&iD!=iE&&iD!=iF&&iD!=iG&&iE!=iF&&iE!=iG&&iF!=iG))

{
cout<<iA<<iB<<iC<&

Thank you!

嵌套太多了,可以考虑用递归来做这道题

#include<stdio.h>
#include<stdlib.h>
int a[8];
char *day[]={"","MONDAY","TUESDAY","WEDNESDAY","THURSDAYT",
"FRIDAY","SATUDAY","SUNDAY"}; /*建 立星期表*/
void main()
{
int i,j,t;
a[4]=6; /*星期四是F值班*/
for(i=1;i<=3;i++)
{
a[i]=2; /*假设B值班的日期*/
if(!a[i+3]) a[i+3]=7; /*若三天后无人值班则安排G值班*/
else{ a[i]=0;continue;} /*否则B值班的日期不断对*/
for(t=1;t<=3;t++) /*假设E值班的时间*/
{
if(!a[t]) a[t]=5; /*若当天无人值班则安排E值班*/
else continue;
if(!a[t+2]) a[t+2]=4; /*若E值班两天后无人值班则应为D*/
else{ a[t]=0;continue;} /*否则E值班的日期不对*/
for(j=5;j<7;j++)
{