# Greedy# Math# Brute Force

d128 - 三、速算游戏

🔗 前往 ZeroJudge 原題

題目描述

題目要求給定三個 0 到 9 的整數 a, b, c,計算由這三個數字透過一次或兩次加法或乘法運算所能得到的最大結果。運算必須保持數字的原始順序。

解題思路

題目要求計算所有可能的運算結果,並找出最大值。可能的運算包括:

  1. 單個運算:a + b + c, a + b * c, a * b + c, a * b * c, a + 10b + c, 10a + b + c, x*(10y+z), (10x+y)*z
  2. 由於題目限制數字範圍為 0 到 9,因此直接計算所有可能的組合並比較大小即可。程式碼中計算了所有可能的加法和乘法組合,並找出最大值。

複雜度分析

  • 時間複雜度: O(1)
  • 空間複雜度: O(1)

程式碼

#include<iostream>
using namespace std;
int main(){
	int x,y,z,chat[7];
	while(cin>>x>>y>>z){
		int max=x+y+z;
		chat[0]=x+10*y+z;
		chat[1]=10*x+y+z;
		chat[2]=x*(10*y+z);
		chat[3]=(10*x+y)*z;
		chat[4]=x+y*z;
		chat[5]=x*y+z;
		chat[6]=x*y*z;
		for(int i=0;i<7;i++){
			if(chat[i]>max)
				max=chat[i];
		}
		cout<<max<<endl;
	}
}

Discussion