zoukankan      html  css  js  c++  java
  • YTU 2438: 三人三鬼

    2438: 三人三鬼

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 35  解决: 9

    题目描述

    *目标是将东岸的33鬼通过一只小船转移到西岸,希望以尽可能少的摆渡次数。
    *船的容量有限,一次最多只能坐2人(或2鬼或11鬼)。
    *无论是在河的东岸还是在河的西岸,一旦鬼数多于人数,则人被鬼扔到河中。
    *怎样渡河的大权掌握在人的手中。
    *只求一种渡河方案。依次输出东岸的状态。

    输入

    无输入

    输出

    依次输出东岸的状态

    样例输入

    NO

    样例输出

    x:(a,b)
    ....

    迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

    #include<iostream>
    using namespace std;
    bool AQ,CHF;
    struct state
    {
        int r;
        int g;
    } s[15],d[7]= {{0,0},{0,-2},{-1,-1},{- 2,0},{0,1},{1,1},{1,0}};
    void display(int p)
    {
        for(int i=1; i<=p; i++)
            cout <<i<<":("<< s[i].r<<","<< s[i].g << ")"<< endl;
    }
    int main()
    {
        s[1].r=3;
        s[1].g=3;
        int u=3,v=3;
        int a,mu,mv;
        int flag1=0;
        int flag2=0;
        int k=0;
        while(!(u==0 && v==0))
        {
            k++;
            if (k%2 == 0)
                a=4;
            else
                a=1;
            for (int i=a; i<=a+2; i++)
            {
                mu = u + d[i].r;
                mv = v + d[i].g;
                if ( mu>3 || mv>3 || mu<0 || mv<0 ||(mu==3 && mv==3 ))continue;
                AQ = ((mu==3) || (mu==0)  ||(mu==1 && mv==1) ||(mu==2 && mv==2) );
                CHF = (flag1) && (flag2);
                if (mu==0 || (AQ&& (!CHF)) )
                {
                    u = mu;
                    v = mv;
                    s[k+1].r=u;
                    s[k+1].g=v;
                    if(u==1&&v==1) flag1++;
                    if(u==2&&v==2) flag2++;
                    break;
                }
            }
        }
        display(k+1);
        return 0;
    }

  • 相关阅读:
    更改桌面位置
    三国杀高级技巧!!
    excel中删除空白行方法
    欢迎来稿
    coreseek配置文件分析
    html中a连接触发表单提交
    html点击按钮动态添加input文本框
    页面表单预览数据传递注意事项
    mysql 主从复制(masterslave)
    mysql explain key_len小结
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989446.html
Copyright © 2011-2022 走看看