当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 题解 P5116 【[USACO18DEC]Mixing Milk】

题解 P5116 【[USACO18DEC]Mixing Milk】

2020年03月15日  | 移动技术网IT编程  | 我要评论

地球生存笔记,火神兽,架子鼓演奏

这题其实完全可以放到入门,其实只要模拟倒牛奶的结果就可以了!

 1 #include<cstdio>
 2 using namespace std;
 3 struct node{
 4     int volume,milk;//volume=c,milk=m
 5 }a[5];//用来存放三个桶的相关信息 
 6 void pour(int from,int to){//模拟倒牛奶的过程,表示从from桶倒到to桶 
 7     if(a[from].milk<=a[to].volume-a[to].milk){//如果可以把from桶倒完的情况 
 8         a[to].milk+=a[from].milk;//to桶的牛奶加上了from桶的 
 9         a[from].milk=0;//from桶的牛奶倒空了 
10     }
11     else{//倒不完的情况
12         a[from].milk=a[from].milk-a[to].volume+a[to].milk;//from桶剩下的牛奶 
13         a[to].milk=a[to].volume;//to桶倒满了 
14     }
15 }
16 int main(){
17     for(int i=1;i<=3;i++)
18         scanf("%d%d",&a[i].volume,&a[i].milk);//输入 
19     for(int i=1;i<=33;i++){//按顺序完成1~99的倒牛奶过程 
20         pour(1,2);//1倒到2 
21         pour(2,3);//2倒到3
22         pour(3,1);//3倒到1
23     }
24     pour(1,2);//第100次
25     for(int i=1;i<=3;i++)
26         printf("%d\n",a[i].milk);//输出最终结果 
27     return 0;
28 }

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网