uva 571 - Jugs
题目大意:给出A,B和aid,A表示小杯的容量,B表示大杯的容量,aid表示要求大杯中剩余的水量,有无限的水,给出方案,(A和B互质)
解题思路:A和B互质就说明了一定有解,因为它们的最大公约数为1。然后方案无非就是有四步组成,考虑清楚四总移动的条件就可以了。
#include <stdio.h> #define max(a,b) (a)<(b)?(a):(b) int main() { int A, B, a, b, aid; while (scanf("%d%d%d", &A, &B, &aid) == 3) { a = b = 0; while (1) { if (b == aid) { printf("success\n"); break; } else if (b == B) { printf("empty B\n"); b = 0; } else if (a == 0) { printf("fill A\n"); a = A; } else { printf("pour A B\n"); int c = max(B - b, a); b += c; a -= c; } } } return 0; }
补充:软件开发 , C++ ,