程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> ZOJ 3706 Break Standard Weight (模擬題)

ZOJ 3706 Break Standard Weight (模擬題)

編輯:關於C++

 

題意:

給你兩個標准重量的物體(質量為整數),你可以選擇將其中一個分成兩塊(整數),求用這三個物體最多可以稱出多少種重量。

其實一共就13種情況,數據量又比較小,用set排除一下重復的,注意下0就好。

代碼:

 

#include 
#include 
#include 
#include 
#include 
using namespace std;
int cal(int a,int b,int c)
{
	set  cnt;
	cnt.insert(abs(a));
	cnt.insert(abs(b));
	cnt.insert(abs(c));
	cnt.insert(abs(a+b));
	cnt.insert(abs(a+c));
	cnt.insert(abs(b+c));
	cnt.insert(abs(a-b));
	cnt.insert(abs(a-c));
	cnt.insert(abs(b-c));
	cnt.insert(abs(a+b+c));
	cnt.insert(abs(a+b-c));
	cnt.insert(abs(a+c-b));
	cnt.insert(abs(b+c-a));
	cnt.erase(0);
	return cnt.size();
}
int main()
{
	int t,a,b,maxx;
	scanf(%d,&t);
	while(t--)
	{
		maxx=0;
		scanf(%d%d,&a,&b);
		for(int i=1;i<=a/2;i++)
		{
			maxx=max(cal(i,a-i,b),maxx);
		}
		for(int i=1;i<=b/2;i++)
		{
			maxx=max(cal(i,b-i,a),maxx);
		}
		printf(%d
,maxx);
	}
	return 0;
}


 

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