考研的阴霾终于是过去了,虽然想起过去的半年,心里还是会有些不舒服,但是已经不再是要死要活的感觉。和爸妈视频的时候也小心的回避了这个话题,大家心里都有数,我的前20年还是太一帆风顺了一点,人总是要经历挫折的,加油!
毕业设计也要上轨道了,每天上午在寝室看书,下午敲代码,晚上去正心,倒也不错,感觉又回到了大二大三的时候。
要开始找工作了,一直都没敢想的事突然就变得迫切起来,努力复习算法,数据结构,C语言ing。
已经辜负了很多人一次,不能让他们再次失望。
就从去哪儿开始吧,找工作攻坚战,开始!
Fight!!
~~~~~~~~~~~~我是萌萌的昏割线~~~~~~~~~~~~~
1409
:这道题的题意不难,就是找一个数字序列中升序和降序的数字数量,注意一下前后相等的情况就好。
但是这道题让我知道了一件事,就是如果HOJ
显示WA
,不一定是结果错了,有时候简单的格式错误,也可能导致WA
而不是PE
。比如这题,其实两个数字前的空格单纯就是空格,即使数字的整数不止一位,也需要空这么多,唯一要求的仅仅是小数位而已,所以只需要使用setprecision()
就行了,不需要使用setw()
。我一开始使用了setw()
,就会导致WA
,想了半天不知道哪错了,然后试着修改了一下输出格式,AC
。。。
然后,我刚刚才知道,原来C/C++
里是支持连续赋值的,比如:
int a, b, c;
a = b = c = 0;
会把这三个变量都赋为0
。
话不多说,代码如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int nums[40], count, up, down, eql, up_times, down_times;
bool up_down, sta, eql_state;
while(cin >> nums[0] && nums[0] != 0){
up = down = eql = up_times = down_times = count = 0;
sta = true, eql_state = false;
while(cin >> nums[++count] && nums[count] != 0);
if(count == 1) cout << "Nr values = 1: 0.000000 0.000000" << endl;
else{
for(int i = 1; i < count; i++){
if(nums[i] == nums[i - 1]){
eql++;
eql_state = true;
}else{
if(sta){
if(nums[i] > nums[i - 1]){
up_times++;
if(eql_state) up = up + eql + 1;
else up++;
up_down = true;
}else if(nums[i] < nums[i - 1]){
down_times++;
if(eql_state) down = down + eql + 1;
else down++;
up_down = false;
}
sta = false;
}else{
if(nums[i] > nums[i - 1]){
if(up_down){
if(eql_state) up = up + eql + 1;
else up++;
}else{
up_times++;
if(eql_state) down += eql;
up++;
}
up_down = true;
}else if(nums[i] < nums[i - 1]){
if(!up_down){
if(eql_state) down = down + eql + 1;
else down++;
}else{
down_times++;
if(eql_state) up += eql;
down++;
}
up_down = false;
}
}
eql = 0;
eql_state = false;
}
}
if(eql_state && !sta){
if(up_down) up += eql;
else down += eql;
}
cout << "Nr values = " << count << ": ";
if(up_times) cout << fixed << setprecision(6) << (double)up / (double)up_times << ' ';
else cout << "0.000000 ";
if(down_times) cout << fixed << setprecision(6) << (double)down / (double)down_times << endl;
else cout << "0.000000" << endl;
}
}
}