大海啊大海你都是水
可我比你还要水
又是一道蜜汁水题
却被我硬生生做成了难题==
不用动态规划!
少递归!
找规律!
【原题】
talk is cheap,show me the code!
【附上自己的愚蠢解法】
#include
#include
#include
using namespace std;
int mmin(int a, int b, int c) {
int j = min(a, b);
j = min(j, c);
return j;
}
int extra(int n) {
if (n % 150 == 0 || n % 200 == 0 || n % 350 == 0)return 0;
else if (n < 150)return n;
else if (n > 150 && n < 200)return n - 150;
else if (n > 200 && n < 350)return n - 200;
else {//能来这的都是大于350的
return mmin(extra(n - 150), extra(n - 200), extra(n - 350));
}
}
int main() {
int m, n, result;
cin >> m;
for (int i = 0; i < m; i++) {
cin >> n;
result = extra(n);
cout << result << endl;
}
return 0;
}
所以当然收获TIME LIMIT EXCEEDED
找规律找规律!
参阅大神解答后重新修改
【新代码】
#include
#include
using namespace std;
int extra(int n) {
if (n < 150)return n;
else if (n < 200 & n>=150)return n - 150;
else if (n >= 200 && n < 300)return n - 200;
else {
return n % 50;
}
}
int main() {
int m, n, result;
cin >> m;
for (int i = 0; i < m; i++) {
cin >> n;
result = extra(n);
cout << result << endl;
}
return 0;
}