Fortune Telling

题目名字 Fortune Telling

题目链接

题意

找出为奇数且最大的那一束花,如果没有输出0,有的话输出花瓣数量

思路

  1. 先判断有没有奇数的花,没有输出0
  2. 有的话计算有奇数个数的花为p个,sort函数使从小到大排列,
  3. 如果p为奇数的话,那就sum将p个数组全部加起来输出
  4. 如果不是,就使第一个最小的奇数花瓣数组a[i]为0,然后sum加起来p个数组输出;

坑点

  1. 题目是找出一朵或好几朵花然后组成一束花,并不是只找出一朵花就行

算法一:

代码
#include
#include
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;
}

你可能感兴趣的:(算法)