| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1922 人关注过本帖, 1 人收藏
标题:关于猎人过河的问题(菜鸟起航,老鸟带路)
只看楼主 加入收藏
sprink
Rank: 2
来 自:南京邮电大学
等 级:论坛游民
帖 子:22
专家分:17
注 册:2009-10-26
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:14 
关于猎人过河的问题(菜鸟起航,老鸟带路)
  猎人要带一条狼、一只羊和一棵大白菜过河。船太小,一次只能带一样。但猎人不在场的情况下,狼要吃羊,羊要吃白菜。请设计一个C程序为猎人指出所有安全的渡河放案。
就是这样的题目。
我刚开始的想法是转化为数学问题,如:狼为1,羊为2,大白菜为3,然后相加就是不能出项1+2=3或2+3=5;但按这样的思路下去,程序根本写不下去。
求老鸟给个思路,或者认为上面方法可行的也给个建议!
谢谢!!
搜索更多相关主题的帖子: 带路 过河 起航 猎人 
2009-10-26 22:57
sprink
Rank: 2
来 自:南京邮电大学
等 级:论坛游民
帖 子:22
专家分:17
注 册:2009-10-26
收藏
得分:0 
先顶上去!!
2009-10-26 22:57
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
今天要睡觉了,先收藏,明天研究;
期待有人先发代码

我可好玩啦...不信你玩玩^_^
2009-10-26 23:04
miao_100200
Rank: 2
来 自:广东-广州
等 级:论坛游民
帖 子:45
专家分:30
注 册:2009-10-26
收藏
得分:0 
!!!我也是菜鸟,期待有人发代码

C菜鸟,在努力之中
2009-10-26 23:40
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:5 
1是狼,2是羊,3是菜,4是人(code没有优化)
程序代码:
int pgy(a,b,c,d) 
{ 
    if((a!=b)&&(a!=c)&&(a!=d)&&(b!=c)&&(b!=d)&&(c!=d)) 
        return (1); 
    else 
        return (0); 
} 
main() 
{ 
    int a,b,c,d,sumA=0,sumB=0; 
        for(a=1;a<5;a++) 
            for(b=1;b<5;b++) 
                for(c=1;c<5;c++) 
                    for(d=1;d<5;d++) 
                        { 
                            if(pgy(a,b,c,d)) 
                                { 
                                    sumA=a+b; 
                                    sumB=c+d; 
 
                                    if((sumA%2==0)&&(sumB%2==0)) 
                                        printf("%d,%d\t%d,%d\n",a,b,c,d); 
                                } 
                        } 
    getch(); 
}
列出所有能存在的情况

我可好玩啦...不信你玩玩^_^
2009-10-27 15:10
sprink
Rank: 2
来 自:南京邮电大学
等 级:论坛游民
帖 子:22
专家分:17
注 册:2009-10-26
收藏
得分:0 
先谢下,拿下去研究研究
2009-10-27 16:06
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 6楼 sprink
A,B代表河两岸

我可好玩啦...不信你玩玩^_^
2009-10-27 16:09
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
回复 5楼 pgy
5是啥?
2009-10-27 18:26
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 8楼 m456m654
循环从1开始,哪有5

我可好玩啦...不信你玩玩^_^
2009-10-27 19:28
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:15 
#include <stdio.h>
#include <stdlib.h>

int total(int * ar, int n);
int* find(int *p, int n, int f);
void xswap(int *a, int *b);

int main(void)
{
    int a[3] = {1,2,3};
    int b[3] = {0};
    int left = 3;
    int right = 0;
    int i, j, count;
    int *p = NULL;
    for (count = 0; left; ++count) {
        --left;
        for (i = 0; i < 3; ++i) {
            if (a[i] != 0 && p != a + i)
            if (left < 2 || (total(a, 3) - a[i]) % 2 == 0) {
                xswap(a+i, p = find(b,3,0));
                ++right;
                break;
            }
        }
        if (right > 1 && total(b, 3) % 2) {
            --right;
            for (j = 0; j < 3; ++j) {
                if (b[j] != 0 && p != b + j)
                if (right < 2 ||
                                 (total(b, 3) - b[j]) % 2 == 0) {
                    xswap(b+j, p = find(a, 3, 0));
                    ++left;
                    break;
                }
            }
        }
    }
    printf("%d\n", count);
    return 0;
}

int total(int * ar, int n)
{
    int sum = 0;
    while (--n >= 0)
        sum += ar[n];
    return sum;
}

int* find(int *p, int n, int f)
{
    while (--n >= 0)
        if (p[n] == f)
            return p + n;
    return NULL;
}

void xswap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}


// 逻辑
1. 从a中移动一个元素到b,使a中不存在食物链
2. 如果b不存在食物链,则4,否则3
3. 从b中移动一个元素到a,使b中不存在食物链
4. 如果a中还有元素,则1
5. 结束



//


[ 本帖最后由 cosdos 于 2009-10-27 22:55 编辑 ]

—>〉Sun〈<—
2009-10-27 22:31
快速回复:关于猎人过河的问题(菜鸟起航,老鸟带路)
数据加载中...
 
   



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

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