PAT1092 最好吃的月餅

TNTZS666發表於2019-01-15

題目地址:https://pintia.cn/problem-sets/994805260223102976/problems/1071785779399028736

題目描述:

月餅是久負盛名的中國傳統糕點之一,自唐朝以來,已經發展出幾百品種。若想評比出一種“最好吃”的月餅,那勢必在吃貨界引發一場腥風血雨…… 在這裡我們用數字說話,給出全國各地各種月餅的銷量,要求你從中找出銷量冠軍,認定為最好吃的月餅。

  • 輸入格式
    輸入首先給出兩個正整數 N(≤1000)和 M(≤100),分別為月餅的種類數(於是預設月餅種類從 1 到 N 編號)和參與統計的城市數量。
    接下來 M 行,每行給出 N 個非負整數(均不超過 1 百萬),其中第 i 個整數為第 i 種月餅的銷量(塊)。數字間以空格分隔。

  • 輸出格式
    在第一行中輸出最大銷量,第二行輸出銷量最大的月餅的種類編號。如果冠軍不唯一,則按編號遞增順序輸出並列冠軍。數字間以 1 個空格分隔,行首尾不得有多餘空格。


解題思路:當輸入的資料很多的時候用java去寫就很容易超時了,最近幾道題用java都是執行超時。這道題只要想到把每一種月餅的銷量和放在一個陣列中,然後找出最大值就能解決了

易錯點:輸出銷量最多的月餅編號的時候,我想到了要一個字元型去接收,但是提交總是不能全部AC,也不好測試錯在哪,所以還是選擇用兩個for迴圈先找出最大值然後再輸出編號了,程式中註釋掉的部分即為我一開始想在一個for迴圈中求出最大值和編號,但存在問題,如果有人有緣看到這並知道為什麼麻煩告知下謝謝啦~~~


程式:

#include<iostream>
using namespace std;
int main(){
	int N,M;
	cin>>N>>M;
	int tmp = 0;
	int b[N]={0};
	for (int i = 0; i < M; ++i)
	{
		for (int j = 0; j < N; ++j)
		{
			cin >> tmp;
			b[j] += tmp;

		}
	}
	int max = b[0];
	//string id="";
	for (int i = 1; i < N; ++i)
	{
		max = b[i]>max?b[i]:max;
		/*if (b[i]>=max&&id!="")
		{
			max=b[i];
			id+=" "+to_string((i+1));
		}
				if (b[i]>=max&&id=="")
		{
			max=b[i];
			id+=to_string((i+1));
		}*/
	}
	cout<<max<<endl;
	int flag = 1;
	for (int i = 0; i < N; ++i)
	{
		if (b[i]==max)
		{
			if (flag)
			{
				cout<<i+1;
				flag=0;
			}else{
				cout<<" "<<i+1;
			}
		}
	}
	
	return 0;
}

相關文章