题目名字 Fortune Telling
题意
找出为奇数且最大的那一束花,如果没有输出0,有的话输出花瓣数量
思路
- 先判断有没有奇数的花,没有输出0
- 有的话计算有奇数个数的花为p个,sort函数使从小到大排列,
- 如果p为奇数的话,那就sum将p个数组全部加起来输出
- 如果不是,就使第一个最小的奇数花瓣数组a[i]为0,然后sum加起来p个数组输出;
坑点
- 题目是找出一朵或好几朵花然后组成一束花,并不是只找出一朵花就行
算法一:
代码
#include<iostream>
#include<algorithm>
using namespace std;
int n,a[101],p=0,ans=0;
//n甘菊的数量,a[105]存每朵花花瓣数
//p是花瓣为奇数的花的个数
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(a[i]%2!=0) p++;
//要统计有几朵是奇数个花瓣
}
if(p==0) cout<<0;
//如果奇数个数为0显然不可能数到爱
if(p%2!=0)
{
for(int i=1;i<=n;i++)
{
ans+=a[i];
}//统计花瓣总数
cout<<ans;
}
else{
sort(a+1,a+n+1);
//使数组中的数字呈递增顺序排序
for(int i=1;i<=n;i++)
{
if(a[i]%2!=0)
{
a[i]=0;
break;
}
//找到第一个奇数值,并将其赋值给p
}
for(int i=1;i<=n;i++)
{
ans+=a[i];//统计最大花瓣数
cout<<ans;
}
}
return 0;
}