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

uva - 10700 - Camel trading(貪心)

編輯:C++入門知識

題意:一個計算式,只有加和乘,在任意地方加括號,輸出結果可能的最大和最小。

方法:最大就是先加後乘法,最小就是先乘後加。分別用兩個數組保存,最後計算就行。

注:這種輸入總是很郁悶,不能用文件,要用回車去判斷輸入結束(下邊代碼的這種)。當然也可以用字符串,全部讀入以後把數分離出來,注意不止一位數。處理方法和前邊一樣。這裡就貼上一位仁兄的代碼,大家懂了就好。

#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   
#include   

using namespace std;

int main()  
{  
	int n, mp, ap;  
	long long  max, min, num, mul[15], add[15];  
	char c;  
	scanf("%d", &n);  
	while (n--)  
	{  
		memset(mul, 0, sizeof(mul));  
		memset(add, 0, sizeof(add));  
		c = '+';  
		mp = 0, ap = -1;  
		while (c != 10)  
		{  
			scanf("%lld", &num);  
			if (c == '+') mul[mp] += num, add[++ap] = num;  
			else mul[++mp] = num, add[ap] *= num;  
			scanf("%c", &c);  
		}  
		max = 1, min = 0;  
		for (int i = 0; i <= mp; ++i) max *= mul[i];  
		for (int i = 0; i <= ap; ++i) min += add[i];  
		printf("The maximum and minimum are %lld and %lld.\n", max, min);  
	}  
	return 0;  
}


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