这次月赛我只说第3、4道题
第三道题:九宫格键盘 AC
这道题和这道题是一模一样的:题目传送门
#include <iostream>
#include <algorithm>
using namespace std;
int sum, s;
string a;
int main() {
getline(cin, a);
for (int i = 0; i < a.size(); i++) {
if (a[i]=='a'||a[i]=='d'||a[i]=='g'||a[i]=='j'||a[i]=='m'||a[i]=='p'||a[i]=='t'||a[i]=='w'||a[i]==' ')
s += 1;
if (a[i]=='b'||a[i]=='e'||a[i]=='h'||a[i]=='k'||a[i]=='n'||a[i]=='q'||a[i]=='u'||a[i]=='x')
s += 2;
if (a[i]=='c'||a[i]=='f'||a[i]=='i'||a[i]=='l'||a[i]=='o'||a[i]=='r'||a[i]=='v'||a[i]=='y')
s += 3;
if (a[i]=='s'||a[i]=='z')
s += 4;
}
cout << s << endl;
return 0;
}
第四道题:预定货物 AC
这道题我攻了两年半,思路:
用一个变量记录进货时的 最小值,再用一个变量记录售价减进价的最大值,时间复杂度为O(n)
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 2e6 + 7;
int a[N], b[N];
int main() {
int n, mx = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
for (int i = 1; i <= n; i++)
scanf("%d", &b[i]);
int mn = 0x7fff;
for (int i = 1; i <= n; i++) {
mn = min(mn, a[i]);
int tmp = b[i+1] - mn;
mx = max(mx, tmp);
}
printf("%d", mx);
return 0;
}
若有更好的解,欢迎评论或私信与我~