zoj 1005 jugs
题目内容见zoj1005由于A,B互素且A的容量小于B,那么可以将B装满并且倒入A中,如果A被装满则将A中的内容全部清空,一直进行下去直到某一刻B中容量恰好等于目标的容量。这种方法能得到正确的结果,但是通常得不到最优结果。
#include <stdio.h>int main(void){int a,b,target,i;int curA,curB;while(scanf("%d %d %d", &a, &b, &target) == 3 ) { curA = curB = 0; if(target == b){printf("fill B\n");} else if(target % a == 0){for(i = 1; i <= target/a; i++) { printf("fill A\n"); printf("pour A B\n"); }} elsewhile(curB != target){curB = b;/*printf("curB:%d\n",curB);*/printf("fill B\n");while(curB >= a-curA) { curB -= a-curA; /* printf("curB:%d\n",curB);*/ printf("pour B A\n"); if(curB == target)break; printf("empty A\n"); curA = 0; }if(curB == target) break;curA += curB;printf("pour B A\n");} printf("success\n"); }return 0;}
页:
[1]