T270713 天天爱跑步
  • 板块学术版
  • 楼主刘俞希2015
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/12/21 14:32
  • 上次更新2024/12/21 14:52:37
查看原帖
T270713 天天爱跑步
1226307
刘俞希2015楼主2024/12/21 14:32

这是本渣渣的第一篇题解,不喜勿喷。

思路:先定义一个变量j=0。输入的bool里面如果为一就让j自增,如果为零就让j清零。

在j自增的时候,如果发现j为1,3,7,30,120,365就让ans(答案)+=对应等级,j同样自增,不变为对应等级

学会了or学废了?

代码:(在思路的基础上有做调整)

#include<bits/stdc++.h>
using namespace std;
bool a[1000000];
int main()
{
	int n,lv[6];
	cin>>n;
	for(int i=0;i<6;i++)
	{
		cin>>lv[i];
	}
	int ans=0,j=0;
	for(int i=0;i<n;i++)
	{
		cin>>a[i];
		if(a[i]==1)
		{
			int w=0;//这里必须将初值赋为零,不然ans就会加乱码。
			j++;
			if(j==1)
				w=lv[0];
			if(j==3)
				w=lv[1];
			if(j==7)
				w=lv[2];
			if(j==30)
				w=lv[3];
			if(j==120)
				w=lv[4];
			if(j==365)
				w=lv[5];
			ans+=w; 
		}
		else
			j=0;
	}
	cout<<ans;
	return 0;
}

中间那段判断条件是可以用switch代替的。

2024/12/21 14:32
加载中...