我觉得这道题其实很好理解,假如给的温度是15度,数据是两个up,300个down,如果你单纯的
if(order == "DOWN")
temper -= 0.1;
else
temper += 0.1;
这样temper肯定会小于0,那应该怎么办呢?————只要在最后一个up的时候把temper改成30就可以了,因为题目说了一定有解,所以不可能出现301个down
那么,接下来的代码理解起来就很简单了
#include <iostream>
#include <string>
using namespace std;
int main(){
double temper;int __;string order;
cin >> temper;cin >> __;cin >> order;
for (int _ = 0; _ < __; _++){
string next_order;
if (cin >> next_order){
if (next_order == order){
if(order == "DOWN")
temper -= 0.1;
else
temper += 0.1;
}
else{
if(next_order == "DOWN")
temper = 30.0;
else
temper = 0.0;
}
order = next_order;
}
else{
if(order == "DOWN")
temper -= 0.1;
else
temper += 0.1;
}
printf("%.1lf\n",temper);
}
}
PS:涉及到浮点数输出的时候cout是真滴麻烦,这题如果用cout输出长这个样子cout << fixed << setprecision(1) << temper << endl;
极限操作一下就可以啦