第一题
// 一 // 测试样例:11 12 13 11 11 11 11 10 9 13 13 11 16 14 15 // 测试样例:11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 #include <iostream> #include <iomanip> #include <algorithm> using namespace std; // 输入n个温度 void inputTemps(int temp[], int n) { cout << "Please input the temperatures:" << endl; for (int i = 0; i < 15; ++i) cin >> temp[i]; cout << endl; } // 显示柱状图 void displayTemps(int temp[], int n) { cout << "显示柱状图如下:" << endl; for (int i = 0; i < 15; ++i) { cout << left << setw(10) << i + 1; for (int j = 0; j < temp[i]; ++j) cout << '*'; cout << endl; } cout << endl; } // 显示月间温度中的所有峰值 void displayPeaks(int temp[], int n) { cout << "显示峰值如下:" << endl; bool flag = 0; for (int i = 1; i < 14; ++i) if (temp[i] > temp[i - 1] && temp[i] > temp[i + 1]) { cout << "Max at day " << i + 1 << " is " << temp[i] << endl; flag = 1; } if (!flag) cout << "没有峰值" << endl; cout << endl; } // 显示月间持续最久的温度 void displayFlat(int temp[], int n) { cout << "显示崮的长度如下:" << endl; int max_len = 1; int length = 1; int before = temp[0]; for (int i = 1; i < 15; ++i) { if (before == temp[i]) { ++length; before = temp[i]; if(i == 14) // 特殊极端情况的一个判定 max_len = max(length, max_len); continue; } before = temp[i]; max_len = max(length, max_len); length = 1; } cout << "The length of longest flat is " << max_len << endl; } // 主函数 int main() { int temps[30]; inputTemps(temps, 30); displayTemps(temps, 30); displayPeaks(temps, 30); displayFlat(temps, 30); return 0; }
第二题
// 二 //// 测试样例:11 12 -13 11 11 11 11 -10 9 13 13 11 16 14 15 //// 测试样例:-11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 #include <iostream> #include <iomanip> #include <algorithm> using namespace std; // 输入n个温度 void inputTemps(int temp[], int n) { cout << "Please input the temperatures:" << endl; for (int i = 0; i < 15; ++i) cin >> temp[i]; cout << endl; } // 显示柱状图 void displayTemps(int temp[], int n) { cout << "显示柱状图如下:" << endl; for (int i = 0; i < 15; ++i) { char print[100] = { ' ' }; print[31] = '|'; cout << left << setw(10) << temp[i]; if (temp[i] > 0) { for (int j = 32; j < temp[i] + 32; ++j) { print[j] = '*'; } } else { for (int j = 30; j > 30 + temp[i]; --j) { print[j] = '*'; } } for (int k = 0; k < 100; ++k) cout << print[k]; cout << endl; } cout << endl; } void displayNum(int temp[], int n) { sort(temp, temp + 15); int before = temp[0]; int len = 1; int max_num = 1; int num = temp[0]; for (int i = 1; i < 15; ++i) { if (before == temp[i]) { len++; before = temp[i]; if (i == 14) { if (len > max_num) num = temp[i - 1]; max_num = max(len, max_num); } continue; } if (len > max_num) num = temp[i - 1]; max_num = max(len,max_num); len = 1; before = temp[i]; } cout << "出现次数最多的是" << num << "度,出现了" << max_num << "次"; } int main() { int temps[30]; inputTemps(temps, 30); displayTemps(temps, 30); displayNum(temps, 30); return 0; }
第三题
// 三 // 测试样例:2 3 BBWBEWW 4 WWWWBBEBB #include <iostream> #include <algorithm> using namespace std; int main() { int N = 0; cin >> N; for(int k = 1;k <= N; ++k){ char str[1000] = {' '}; int n = 0; cin >> n; int temp = 0; bool flag = 1; for (int i = 1; i <= 2 * n + 1; ++i) { cin >> str[i]; if (str[i] == 'E') temp = i; if (str[i] == 'B' && i < n) flag = 0; } cout << "结果_" << k << endl; if (flag) cout << "目标格局" << endl; else{ if (temp != 2 * n + 1) { swap(str[temp], str[temp + 1]); cout << str << endl; swap(str[temp], str[temp + 1]); if (temp != 2 * n) { swap(str[temp], str[temp + 2]); cout << str << endl; swap(str[temp], str[temp + 2]); if (temp != 2 * n - 1) { swap(str[temp], str[temp + 3]); cout << str << endl; swap(str[temp], str[temp + 3]); } } } if (temp != 1) { swap(str[temp], str[temp - 1]); cout << str << endl; swap(str[temp], str[temp - 1]); if (temp != 2) { swap(str[temp], str[temp - 2]); cout << str << endl; swap(str[temp], str[temp - 2]); if (temp != 3) { swap(str[temp], str[temp - 3]); cout << str << endl; swap(str[temp], str[temp - 3]); } } } } } }