问题 C: 小明的衣服
时间限制: 1 Sec 内存限制: 128 MB
题目描述
小明有三件不用洗的神奇衣服。
第一件是T恤,他会在温度不超过30℃时穿着;
第二件是穿在T恤外的卫衣,他会在温度不超过15℃时穿着;
第三件是穿在卫衣外的棉袄,他会在温度不超过0℃时穿着;
小明当且仅当每天早上起床的时候更换衣服,且一定会在合适的温度穿合适的衣服。
小明穿衣服和脱衣服每次都只能穿一件或脱一件。
今天是15℃,小明穿着T恤和卫衣。给出未来n天的温度,且每天的温度不会变化,小明想知道他未来n天需要穿几次衣服,脱几次衣服。
输入
输入第1行只有一个正整数T,表示有T组数据。
对于每组数据的输入:
第一行为1个整数n(1≤n≤105),表示未来n天。
接着输入n个由空格分开的整数,第i个整数表示第i天的温度,该整数绝对值不超过40。
保证输入的n的总和不超过105。
输出
对于每组数据输出一行包含2个整数,分别代表穿衣服的次数和脱衣服的次数。
样例输入
2
3
16 15 16
3
30 15 0
样例输出
1 2
2 1
思路
1. 就是穷举,把情况列举出来
2.有个坑就是可以不穿衣服
#include <stdio.h>
#include <stdlib.h>
/*
定义变量
xiaoming代表当前衣服的件数
tuo代表拖衣服的次数
chuan代表穿衣服的次数
*/
int xiaoming,tuo,chuan;
//自定义函数
void chuantuo(int t){
if(t <= 0){// 温度小于0 冷死了qwq
if(xiaoming == 0){ //如果没穿衣服
chuan += 3 ; //还要穿三件
}else if(xiaoming==1){//如果穿了一件衣服
chuan +=2 ; //还要穿二件
}else if(xiaoming==2){//如果穿了二件衣服
chuan++ ; //再穿一件
}
xiaoming = 3 ;
} else if (t <= 15){
if(xiaoming == 0){
chuan += 2 ;
}else if(xiaoming == 1){
chuan++ ;
}else if(xiaoming == 3){
tuo++ ;
}
xiaoming = 2 ;
}else if(t <= 30){
if(xiaoming == 0){
chuan++ ;
}else if(xiaoming == 2){
tuo++ ;
}else if(xiaoming == 3){
tuo += 2 ;
}
xiaoming = 1 ;
}else if(t <= 40){
if(xiaoming == 0){
}else if(xiaoming == 1){
tuo++ ;
}else if(xiaoming == 2){
tuo += 2 ;
}else if(xiaoming == 3){
tuo += 3 ;
}
xiaoming = 0;
}
}
int main()
{
int i,j,n,t,T;
//输入
scanf("%d",&T);
for(i = 0 ; i < T ; i++){
scanf("%d",&n);
xiaoming = 2 ;
tuo = 0 ;
chuan = 0 ;
for(j = 1 ; j <= n ; j++){
scanf("%d",&t);
chuantuo(t);
}
//输出
printf("%d %d\n",chuan,tuo);
}
return 0;
}
/**************************************************************
Problem: 2206
User: 21XXXXXXXX
Language: C
Result: 正确
Time:40 ms
Memory:1120 kb
****************************************************************/