【Code Pratice】—— 递增三元组、比酒量、成绩分析
文章目錄
- 1 | 遞增三元組
- 題目
- 思路
- 邏輯代碼
- 2 | 比酒量
- 題目
- 思路
- 邏輯代碼
- 3 | 成績分析
- 題目
- 思路
- 邏輯代碼
1 | 遞增三元組
題目
給定三個整數數組
A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN],請你統計有多少個三元組(i, j, k) 滿足:
1 <= i, j, k <= N Ai < Bj < Ck輸入格式
第一行包含一個整數N。
第二行包含N個整數A1, A2, … AN。
第三行包含N個整數B1, B2, … BN。
第四行包含N個整數C1, C2, … CN。
對于30%的數據,1 <= N <= 100
對于60%的數據,1 <= N <= 1000
對于100%的數據,1 <= N <= 100000 0 <= Ai, Bi, Ci <= 100000
輸出格式
一個整數表示答案
例子
輸入
輸出
27
思路
只需要對比前后兩個元素的大小關系,累加個數即可
邏輯代碼
int IncTriples(int i_uNum, vector<vector<int> >& i_uArr) {int res = -1;if (1 > i_uNum){return res;}res = 0;for (int i = 0; i < i_uNum; i++){for (int j = 0; j < i_uNum; j++){for (int k = 0; k < i_uNum; k++){if ((i_uArr[0][i] <= i_uArr[1][j]) && (i_uArr[1][j] <= i_uArr[2][k])){res++;}}}}return res; }2 | 比酒量
題目
有一群海盜(不多于20人),在船上比拼酒量。過程如下:打開一瓶酒,所有在場的人平分喝下,有幾個人倒下了。再打開一瓶酒平分,又有倒下的, 再次重復…
直到開了第4瓶酒,坐著的已經所剩無幾,海盜船長也在其中。當第4瓶酒平分喝下后,大家都倒下了。
等船長醒來,發現海盜船擱淺了。他在航海日志中寫到:“…昨天,我正好喝了一瓶…奉勸大家,開船不喝酒,喝酒別開船…”
請你根據這些信息,推斷開始有多少人,每一輪喝下來還剩多少人。
如果有多個可能的答案,請列出所有答案,每個答案占一行。
格式是:人數,人數,…
例如,有一種可能是:20,5,4,2,0
思路
理解題目,得到三個關鍵點
從這三個關鍵點,很好得出這個數學題的解題思路 —— 計算從第一輪開始,每一輪都少N個人,計算最后是否加起來的酒等于1瓶
邏輯代碼
void CompareWineCapacity() {for (int i = 20; i >= 4; i--){for (int j = 4; j < i; j++){for (int k = 3; k < j; k++){for (int l = 2; l < k; l++){int Denominator = i * j * k * l;int Molecular = (j * k * l) + (i * k * l) + (i * j * l) + (i * j * k);if (Denominator == Molecular){cout << "res = [" << i << " " << j << " " << k << " " << l << "]" << endl;}}}}} }3 | 成績分析
題目
小藍給學生們組織了一場考試,卷面總分為100分,每個學生的得分都是一個0到100的整數。
請計算這次考試的最高分、最低分和平均分。
輸入格式
輸入的第一行包含一個整數n,表示考試人數。
接下來n行,每行包含一個0至100的整數,表示一個學生的得分。
輸出格式
輸出三行。
第一行包含一個整數,表示最高分。
第二行包含一個整數,表示最低分。
第三行包含一個實數,四舍五入保留正好兩位小數,表示平均分。
例子
輸入
輸出
99 10 71.29思路
兩個思路
邏輯代碼
void LQ_Simple::PerformanceAnalysis(vector<int>& i_uArr) {int len = i_uArr.size();if (0 == len){cout << "Input parameter is unvalid." << endl;return;}int solution = 0;int ScoreMax = 0;int ScoreMin = 100;int ScoreSum = 0;float ScoreAver = 0.00;cout << "Please select Solutions[1, 2]: ";cin >> solution;switch (solution){case 1:{for (int i = 0; i < len; i++){ScoreSum += i_uArr[i];}Sort(i_uArr);ScoreMax = i_uArr[0];ScoreMin = i_uArr[len - 1];ScoreAver = ((float)ScoreSum / len);}break;case 2:{for (int i = 0; i < len; i++){ScoreSum += i_uArr[i];if (ScoreMax < i_uArr[i]){ScoreMax = i_uArr[i];}if (ScoreMin > i_uArr[i]){ScoreMin = i_uArr[i];}}ScoreAver = ((float)ScoreSum / len);}break;default:break;}cout << "The highest score = [" << ScoreMax << "]." << endl;cout << "The lowest score = [" << ScoreMin << "]." << endl;cout << "The average score = [" << fixed << setprecision(2) << ScoreAver << "]." << endl; }總結
以上是生活随笔為你收集整理的【Code Pratice】—— 递增三元组、比酒量、成绩分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OSG开发笔记(一):OSG介绍、编译
- 下一篇: 从零开始制作基于Unity引擎的宝石消消