| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1874 人关注过本帖, 3 人收藏
标题:有没有人帮在下一个忙啊??近来看看啊!大家帮帮忙!
只看楼主 加入收藏
椰风海韵
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-5-26
收藏(3)
 问题点数:0 回复次数:6 
有没有人帮在下一个忙啊??近来看看啊!大家帮帮忙!

一个人要从一条河的A岸到B岸,他带这,一头狼,一只羊,还有一筐白菜,可是过河的船只能让每次只能让他带这一样东西过河,可是如果,人不在的时候,狼会吃掉羊,羊会吃掉白菜,

可以根据以下步骤编一个程序,让人可以顺利的过河,并且又不损失任何东西,

1,人先带着羊过河,

2,人空手回来,

3,人带着狼过河,

4,人带着羊回来,

5,人带着白菜过河,

6,人空手回来,

7,人带着羊过河

这个问题我前两天发过,可是因为数据库的问题,把我的帖子删了,希望大家能帮帮忙!

搜索更多相关主题的帖子: 数据库 过河 白菜 帖子 
2004-05-26 00:22
椰风海韵
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-5-26
收藏
得分:0 
就是用C编个程序,让人能顺利过河!条件已经说清楚了!各位帮帮忙!谢谢了!
就是用C编个程序,让人能顺利过河!条件已经说清楚了!各位帮帮忙!谢谢了!
2004-05-26 00:25
好学
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:622
专家分:318
注 册:2004-5-4
收藏
得分:0 
高手一会就来
2004-05-26 08:52
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
收藏
得分:0 

// 由于时间的关系,程序没有帮你完全写完,希望有兴趣的朋友把它补充完整

#include <cstdlib> #include <iostream> #include <stdio.h>

using namespace std;

struct Side { char name[50]; int man; int sheep; int wolf; int greens; int situation; int newSituation; void update() { man = situation & 0x8; sheep = situation & 0x4; wolf = situation & 0x2; greens = situation & 0x1; } Side(int s, const char * pn) { strcpy(name, pn); situation = s; update(); } bool check_ok() { int sitation = man | sheep | wolf | greens; bool result = true; for(int i = 5; i<=10; i++) { if(i == sitation) { result = false; break; } } return result; } void report() { // add your code // for example: // *** moved, ***moved } bool move(Side * anotherSide) { bool move; switch(situation) { case 15: situation = 3; anotherSide->situation = 12; update(); anotherSide->update(); report(); anotherSide->report(); move = true; break; case 14:

break;

} return move; } };

int main() { Side SideA(15, "SideA"); Side SideB(0, "SideB");

while(SideA.situation != 0) { if(SideA.move(&SideB)) ; else SideB.move(&SideA); }

system("pause"); return 0; }


自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2004-05-26 10:42
椰风海韵
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-5-26
收藏
得分:0 
谢谢了!可是你没编完的那些我还是不懂啊!
谢谢了!可是你没编完的那些我还是不懂啊!
2004-05-26 12:47
椰风海韵
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-5-26
收藏
得分:0 
有没有高手帮我把它补全啊???
有没有高手帮我把它补全啊???急用啊~~~~~
2004-05-26 12:51
尘安
Rank: 2
等 级:论坛游民
威 望:1
帖 子:19
专家分:55
注 册:2018-8-9
收藏
得分:0 
代码有些臃肿,大佬们可以看着再精简下
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>

#define WOLF 3      //
#define SHEEP 2     //
#define CABBAGE 1   //白菜

int a[3]={WOLF,SHEEP,CABBAGE},b[3];     //A岸,B岸
int count_a=3,count_b=0;                //未过河数,过河数

int main()
{
    int i;      //循环变量
    printf("A岸的初始状态:\t");
    for(i=0;i<count_a;i++)
        printf("%d\t",a[i]);
    printf("\n");
    int state=0;    //往返状态,0为A去往B;1为B返回A
    while(1)
    {
        switch(state)
        {
        case 0:     //A去往B
            if(count_a==3)
                while(1)
                {
                    int t=abs(a[0]-a[1]);
                    if(t==1)
                    {
                        t=a[0];
                        a[0]=a[1];
                        a[1]=a[2];
                        a[2]=t;

                        for(i=0;i<count_a;i++)
                            printf("%d\t",a[i]);
                        printf("\n");
                        continue;
                    }
                    else
                    {
                        b[count_b++]=a[--count_a];
                        printf("\n过河:%d\n",b[count_b-1]);
                        printf("过河后A岸的状态:\t");
                        for(i=0;i<count_a;i++)
                            printf("%d\t",a[i]);
                        printf("\n\n");
                        break;
                    }
                }
            else if(count_a==2)
            {
                int t=a[0];
                a[0]=a[1];
                a[1]=t;
                b[count_b++]=a[--count_a];
                printf("过河:%d\n",b[count_b-1]);
                printf("过河后A岸的状态:\t");
                for(i=0;i<count_a;i++)
                    printf("%d\t",a[i]);
                printf("\n\n");
            }
            else
            {
                b[count_b++]=a[--count_a];
                printf("过河:%d\n",b[count_b-1]);
                printf("过河后A岸的状态:\t");
                for(i=0;i<count_a;i++)
                    printf("%d\t",a[i]);
                printf("\n\n");
            }
            state++;
            system("pause");
            break;
        case 1:     //B返回A
            if(count_b==1)
            {
                printf("返回:人\n返回后的状态:\t");
                for(i=0;i<count_b;i++)
                    printf("%d",b[i]);
                printf("\n\n");
            }
            else if(count_b==2)
            {
                int t=abs(b[0]-b[1]);
                if(t==1)
                {
                    t=b[0];
                    b[0]=b[1];
                    b[1]=t;
                    a[count_a++]=b[--count_b];
                    printf("返回:%d\n",a[count_a-1]);
                }
                else
                    printf("返回:人\n");
                printf("返回后的B岸的状态:\t");
                for(i=0;i<count_b;i++)
                    printf("%d\t",b[i]);
                printf("\n\n");
            }
            state--;
            system("pause");
            break;
        }
        if(count_b==3)
            break;
    }
    printf("成功过河!");
    return 0;
}
2018-08-16 09:26
快速回复:有没有人帮在下一个忙啊??近来看看啊!大家帮帮忙!
数据加载中...
 
   



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

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