程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 2499 Binary Tree(水題)

POJ 2499 Binary Tree(水題)

編輯:C++入門知識

【題意簡述】:二叉樹,根節點為(1,1),現在每個節點設為(a,b)它的左孩子是就是(a+b,b),同理右孩子就是(a,a+b)。現在已知這個節點了,求其從根節點開始經過幾次向左的發展,幾次向右的發展!

【思路】:我們可以通過一個逆向的思維去解決這道題,起點就是輸入的數據,終點就是根節點!這個時候我們就可以從測試數據裡找一些規律,我們不難發現使用輾轉相除就能解決這個問題!(閉嘴其實我最開始用的還是輾轉相減,導致我TLE,但仔細一想便不難得知,輾轉相減與輾轉相除,本就是“一家”啊!!經過改正後,順利AC!)


詳見代碼:

//228K 16Ms
#include
using namespace std;

int main()
{
	int t,a,b;
	int suml,sumr;
	cin>>t;
	int count = 1;
	while(t--)
	{
		cin>>a>>b;
		suml = 0,sumr = 0;
		while(1){
			if(a>b){
				suml+=a/b;
				a = a % b;
				//循環終止條件! 
				if(a == 0){
					suml = suml-1;
					break;
				}
			}
			else
			{
				sumr+=b/a;
				b = b % a;
				if(b == 0)
				{
					sumr = sumr-1;
					break;
				}
			}
		}
		cout<<"Scenario #"<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved