倒水问题(暑假每日一题 17)
现在在保证不会有漏水的情况下进行若干次如下操作:
输入格式 输入包含多组测试数据。
输出格式 每组数据输出一个结果,占一行。
输入样例:
0 5 52 2 4
输出样例:
23
#include#includeusing namespace std;int A, B, C;void dfs(int a, int b, int c, unordered_set &S){ if(a == A && b == B || c == 0){ S.insert(c); return; } int x; if(A && a != A) { x = min(A - a, c); dfs(a + x, b, c - x, S); } if(B && b != B){ x = min(B - b, c); dfs(a, b + x, c - x, S); } if(A && a == A){ x = min(a, B - b); dfs(a - x, b + x, c, S); } if(B && b == B){ x = min(A - a, b); dfs(a + x, b - x, c, S); }}int main(){ while(cin >> A >> B >> C){ unordered_set S; dfs(0, 0, C, S); cout << S.size() << endl; } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~