当前位置:编程学习 > C/C++ >>

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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,