| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 545 人关注过本帖
标题:值班问题,求大神们看看错哪呢?有没有其他简单点的方法啊??
只看楼主 加入收藏
smile康师傅
Rank: 2
等 级:论坛游民
帖 子:34
专家分:53
注 册:2012-6-10
结帖率:71.43%
收藏
已结贴  问题点数:10 回复次数:3 
值班问题,求大神们看看错哪呢?有没有其他简单点的方法啊??
题目:
医院有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;
}
搜索更多相关主题的帖子: compare include 
2012-06-28 23:28
逸枫
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:33
专家分:113
注 册:2012-6-10
收藏
得分:3 
星期一是第一天?周日是最后一天吗?

一 二 三 四 五 六 日
E  B  D  F  G  C  A

用数学方法求出来-。-直接printf行吗。。
2012-06-29 03:50
一只小猪猪
Rank: 2
等 级:论坛游民
帖 子:5
专家分:13
注 册:2012-4-24
收藏
得分:3 
以下是引用smile康师傅在2012-6-28 23:28:21的发言:


                                if(((C-A)==1)&&((D-E)==2)&&((G-B)==3)&&((F>B&&F<C)||(F>C&&F<B)))
        


条件后面可以改成((F-B)==(C-F)||(F-C)==(B-F)) 不?

上面那仁兄也太牛了~ 呵呵~

[ 本帖最后由 一只小猪猪 于 2012-6-29 17:12 编辑 ]
2012-06-29 17:11
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:3 
回溯法解决此类问题,貌似呵呵
2012-06-29 18:07
快速回复:值班问题,求大神们看看错哪呢?有没有其他简单点的方法啊??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016568 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved