csp试题1:小明种苹果
csp試題1:小明種蘋果
- 題目
- 分析
- 代碼
- 總結
題目
題目描述
??????小明在他的果園里種了一些蘋果樹。為了保證蘋果的品質,在種植過程中要進行若干輪疏果操作,也就是提前從樹上把不好的蘋果去掉。第一輪疏果操作開始前,小明記錄了每棵樹上蘋果的個數。每輪疏果操作時,小明都記錄了從每棵樹上去掉的蘋果個數。在最后一輪疏果操作結束后,請幫助小明統計相關的信息。
輸入格式
??????從標準輸入讀入數據。
??????第1行包含兩個正整數N和M,分別表示蘋果樹的棵數和疏果操作的輪數。
??????第1+i行(1<= i <= N),每行包含M+1個整數ai0,ai1,…,aiM。其中ai0為正整數,表示第一輪疏果操作開始前第i棵樹上蘋果的個數。aij(1 <= j <= M)為零或負整數,表示第j輪疏果操作時從第i棵樹上去掉的蘋果個數。如果為0,表示沒有去掉蘋果;如果為負,其絕對值為去掉的蘋果個數。
??????每行中相鄰兩個數之間用一個空格分隔。
輸出格式
??????輸出到標準輸出。
??????輸出只有一行,包含三個整數T、k和P。其中,
????????T為最后一輪疏果操作后所有蘋果樹上剩下的蘋果總數(假設蘋果不會因為其它原因減少);
????????k為疏果個數(也就是疏果操作去掉的蘋果個數)最多的蘋果樹編號;
????????P為該蘋果樹的疏果個數。
??????相鄰兩個數之間用一個空格分隔。輸入的數據保證是正確的,也就是說,每棵樹在全部疏果操作結束后剩下的蘋果個數是非負的。
樣例1
輸入:
輸出:
167 2 23樣例解釋:
??????第1棵蘋果樹的疏果個數為8+6+4 = 18, 第2棵為5+10+8 = 23,第3棵為6+15+0 = 21,因此最后一輪疏果操作后全部蘋果樹上的蘋果個數總和為(73 -18)+ (76 - 23)+ (80 - 21)= 167,疏果個數最多的是第2棵樹,其疏果個數為23。
樣例2
輸入:
輸出:
17 1 4樣例解釋:
??????兩棵樹的疏果個數均為4,應輸出編號最小的第1棵數。
子任務
????
????|aij|<= 106,對所有1 <= i <= N, 0<= j <= M。
分析
??????只需要將數據接收到數據對象中,然后是單純的計算,最后的尋找最大值時也只需要一次遍歷即可完成。
代碼
/* 20190925 csp試題1:小明種蘋果 */#include <iostream> using namespace std;int apples[1001]; int drops[1001][1001]; int tree_drop[1001]; int main(){//接收數據int N, M;cin >>N >>M;for(int i=0; i<N; i++){cin >>apples[i];for(int j=0; j<M; j++){cin >>drops[i][j];}}//計算最后的蘋果總數int all = 0;int drop_num = 0;for(int i=0; i<N; i++){all += apples[i];for(int j=0; j<M; j++){drop_num += drops[i][j];}} all = all + drop_num; //計算疏果最多的蘋果樹編號及疏果個數//計算每棵樹減去的蘋果數 int temp = 0;for(int i=0; i<N; i++){for(int j=0; j<M; j++){temp += drops[i][j]; }tree_drop[i] = -temp;temp = 0;} //找最大值和對應編號 int max_num = tree_drop[0];int id = 1;for(int i=1; i<N; i++){if(max_num < tree_drop[i]){max_num = tree_drop[i];id = i+1;}}//輸出cout <<all <<" " <<id <<" " <<max_num<<endl; return 0; }總結
??????這個題并不難,在示例1的解釋中甚至給出了求最后剩余蘋果個數的過程。
總結
以上是生活随笔為你收集整理的csp试题1:小明种苹果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [C#] UI跨执行绪
- 下一篇: 信贷种类