ZOJ1005POJ1606Jugs 数论法

来源:互联网 发布:大数据思维与决策pdf 编辑:程序博客网 时间:2024/06/03 09:32

这个其实可以用数学方法证明其中的规律的,对于A,B,N,只要N能被A或B除尽,或者N能被A和B的最大公约数除尽,一直装一直倒就可以了,有时间我会证明一下的。当然了,你们也可以用广度优先搜索的方法,可以参考一下这个博客。好了,上代码。


/******************************************************************************* * Author : Neo Fung * Email : neosfung@gmail.com * Last modified : 2011-07-16 17:08 * Filename : ZOJ1005_POJ1606_Jugs.cpp * Description : http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5 * *****************************************************************************/// ZOJ1005_Jugs.cpp : Defines the entry point for the console application.////#include "stdafx.h"#include <fstream>#include <stdio.h>#include <iostream>#include <string.h>#include <vector>#include <stack>#include <deque>#include <map>#include <math.h>#include <algorithm>#include <numeric>#include <functional>#include <memory.h>using namespace std;int main(void){ //ifstream cin("data.txt");int a,b,result;int aleft,bleft;while(cin>>a>>b>>result){aleft=bleft=0;while(aleft!=result && bleft!=result){bleft = b;cout<<"fill B"<<endl;if(1){if(a-aleft>=bleft){aleft+=bleft;bleft=0;cout<<"pour B A"<<endl;}else{while(bleft > a-aleft && bleft != result){bleft = bleft-a+aleft;cout<<"pour B A"<<endl;aleft =0;cout<<"empty A"<<endl;}if (bleft == result){break;}aleft = bleft;bleft =0 ;cout<<"pour B A"<<endl;}}}cout<<"success"<<endl;}return 0;}


原创粉丝点击