笔试强训(二)
一.牛牛的快递
https://www.nowcoder.com/practice/41b42e7b3c3547e3acf8e90c41d98270?tpId=290&tqId=39852&ru=/exam/oj
#include <iostream>
#include <cmath>
using namespace std;int main()
{double a;char b;cin >> a >> b;int ret = 0;if (a <= 1){ret += 20;}else{ret += 20;a -= 1;ret += ceil(a);}if (b == 'y') ret += 5;cout << ret << endl;return 0;
}
二.最小花费爬楼梯
https://www.nowcoder.com/practice/9b969a3ec20149e3b870b256ad40844e?tpId=230&tqId=39751&ru=/exam/oj
//楼顶在最后一个数组的后一个位置//dp[i]表示到达i位置的最小花费(不计算当前位置的cost[i])
#include <iostream>
using namespace std;const int N = 1e5 + 10;
int cost[N];
int n;
int dp[N];
int main() {cin >> n;for (int i = 0; i < n; i++){cin >> cost[i];}for (int i = 2; i <= n; i++){dp[i] = min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);}cout << dp[n] << endl;return 0;
}
三.数组中两个字符串的最⼩距离
https://www.nowcoder.com/questionTerminal/2c6a0a8e1d20492f92941400036e0890
#include <iostream>
#include <string>
#include <algorithm>using namespace std;int main()
{int n;string s1, s2;string s;cin >> n;cin >> s1 >> s2;int prev1 = -1, prev2 = -1, ret = 0x3f3f3f3f;for (int i = 0; i < n; i++){cin >> s;if (s == s1) // 去前面找最近的 s2{if (prev2 != -1){ret = min(ret, i - prev2);}prev1 = i;}else if (s == s2) // 去前面找 s1{if (prev1 != -1){ret = min(ret, i - prev1);}prev2 = i;}}if (ret == 0x3f3f3f3f) cout << -1 << endl;else cout << ret << endl;return 0;
}