[基础题库] 时间之流 (目前最简满分代码思路

一、题目背景

时间之流

题目描述:
每个人的时间长河里面,都有几个重要的关键时间点,
以数字的形式呈现在长河之中,当每个人的这些数字都聚集在一起的时候,
就汇聚成了一条庞大的时间之流。
而你们的任务就是在这满是时间数字的流之中,
选定部分时间数字相乘,并使其乘积最终的结果最大。
注意:时间数字之中可能会出现负数及0,他们代表一些人想要忘却的时间点。
由于时间的严谨,所有时间数字已经按照从小到大顺序升序排列。
输入格式:
第一行输入数N,表示有N个时间数字
第二行输入N个整数。
输出格式:
输出仅一行,即最大的乘积。
样例输入:
4
1 2 3 4
样例输出:
24

二、代码

思路:无须大量if else 将过程抽象出来 只看结果

与网络上其他几个答案相比,这样做清晰很多

[基础题库] 时间之流 (目前最简满分代码思路_第1张图片


#include 
using namespace std;
int main() {
	long long N,temp,temp_m,ret_m=1,ret=1;
	bool allZero=true;
	cin>>N;
	//long long arr[N];
	for (int i=0;i<N;++i) {
		cin>>temp;
		if(temp>0) {
			allZero=false;
			ret*=temp;
		} else if(temp<0) {
			allZero=false;
			temp_m=temp;
			ret_m*=temp_m;
		}
	}
	if(ret_m<0&&ret!=1)
			ret_m/=temp_m;
	if(allZero)
			cout<<0; 
	else 
		cout<< ret_m*ret;
}

你可能感兴趣的:(基础题库,C++)