博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
USACO Mother's Milk
阅读量:5790 次
发布时间:2019-06-18

本文共 2025 字,大约阅读时间需要 6 分钟。

hot3.png

使用了 DFS,并模拟倒牛奶的过程。

注意DFS处理回溯的方法:

    int t1,t2,t3,i,j;    for(i=0;i<3;i++){          for(j=0;j<3;j++){                t1 = b[0].m;                t2 = b[1].m;                t3 = b[2].m;                if( dao(i,j)){                     dfs(b[0].m, b[1].m, b[2].m);                     }                //回溯到原来的状态                b[0].m = t1;                b[1].m = t2;                b[2].m = t3;           }    }

代码:

/*ID: nenusb1LANG: CTASK: milk3 */#include 
#include 
#include 
int map[21][21][21];//表示状态  typedef struct{     int c;//capacity        int m;//milk}buk;buk b[3];int dao(int f, int t){//f桶倒入t桶          if(f==t || b[f].m == 0 || b[t].m == b[t].c){              return 0;    }    int temp = b[t].c - b[t].m;    if(b[f].m > temp){//t桶能被倒满          b[f].m -= temp;         b[t].m = b[t].c;    }else{//f桶被倒空          b[t].m += b[f].m;         b[f].m = 0;             }    return 1;}int dfs(int x, int y, int z){//参数是3个桶当前的牛奶     if(map[x][y][z]){              return 0;    }    map[x][y][z] = 1;    int t1,t2,t3,i,j;    for(i=0;i<3;i++){          for(j=0;j<3;j++){                t1 = b[0].m;                t2 = b[1].m;                t3 = b[2].m;                if( dao(i,j)){                     dfs(b[0].m, b[1].m, b[2].m);                     }                //回溯到原来的状态                b[0].m = t1;                b[1].m = t2;                b[2].m = t3;           }    }    return 0;    } int main(){    freopen("milk3.in","r",stdin);    freopen("milk3.out","w",stdout);    int i,j;    for(i=0; i<3; i++){          scanf("%d",&b[i].c);          b[i].m = 0;    }    int total = b[2].c;    b[2].m = total;//C桶是满的          int list[20];    memset(list,0,sizeof(list));        memset(map,0,sizeof(map));    dfs(0,0,total);     for(i=0; i<=total; i++){          for(j=0; j<=total; j++){                if(map[0][i][j]){                            list[j] = 1;                     }          }    }        for(i=0; i

转载于:https://my.oschina.net/kaneiqi/blog/262909

你可能感兴趣的文章
簡單分稀 iptables 記錄 udp 微軟 138 端口
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
H3C-路由策略
查看>>
centos 修改字符界面分辨率
查看>>
LNMP之Mysql主从复制(四)
查看>>
阅读Spring源代码(1)
查看>>
nagios一键安装脚本,nagios监控被监控主机上的应用服务mysql数据库
查看>>
grep 命令
查看>>
JS二维数组的声明和使用
查看>>
v$archive_gap dg dataguard 断档处理 scn恢复
查看>>
问责IT风险管理:CIO需关注两个重点
查看>>
Winform打包发布图解
查看>>
PDF文件怎么编辑,超简单的方法
查看>>
EasyUI基础入门之Easyloader(载入器)
查看>>
Uva 839 Not so Mobile
查看>>
30款超酷的HTTP 404页面未找到错误设计
查看>>
程序猿必备 MyEclipse2013-2014系列
查看>>
java中ArrayList 、LinkList区别
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>