C语言你爱我么?(ZZULIOJ 1205:你爱我么?)

题目描述

LCY买个n束花准备送给她暗恋的女生,但是他不知道这个女生是否喜欢他。这时候一个算命先生告诉他让他查花瓣数,第一个花瓣表示"爱",第二个花瓣表示"不爱",第三个花瓣表示"爱".....

为了使最后结果是"爱",LCY需要从n束花中选出一些,你能帮他算出最后他送给这个女生的花中最多包含多少个花瓣吗?


输入:

首先输入一个整数T,表示测试实例的个数。

接下来T组测试实例,每组实例首先输入一行,包括一个整数n(1 <= n <= 100)。

然后输入一行,n个数a1,a2...an(1 <= ai <= 100),表示每束花包含的花瓣的个数。


输出:

每组实例输出一个整数,表示LCY最多能送多少个花瓣给这个女生。


样例输入 Copy

cpp 复制代码
3
1
1
1
2
3
5 6 7

样例输出 Copy

cpp 复制代码
1
0
13

**提示:**每一束花不允许去掉一些花瓣再送。这样算命就不准了-_-#
思路:解决这个问题,理清两点即可,即所有的花瓣数量之和是奇数还是偶数的问题,

1.当所有花瓣数量之和为奇数时,则直接输出和即可。

2.当所有花瓣数量之和为偶数时,有两种情况,第一种情况所有的花束的花瓣数量都是偶数,这种情况输出0即可,第二种情况是部分花束的花瓣数量为奇数,部分为偶数,这种情况只需用所有花瓣数量之和减去花束中最小的的奇数花瓣数量即为最大花瓣数。

程序代码
cpp 复制代码
#include<stdio.h>
int main(){
	int T;
	scanf("%d",&T);//输入一个整数T表示测试的案例数
	while(T--){
		int n;//输入一个整数n表示花束数量
		scanf("%d",&n);
		int a[n];//定义一个数组a用来存储每一束花的花瓣数
		int sum=0;
		int min=100;
		for(int i=0;i<n;i++){
			scanf("%d",&a[i]);//输入每束花的花瓣数
			sum+=a[i];
			if(a[i]%2!=0&&a[i]<min){//找到最小的奇数,并赋值给min
			    min=a[i];
			}
		}
		if(sum%2!=0) printf("%d\n",sum);//当所有花瓣之和为奇数时,输出sum
		else if(min==100) printf("0\n");//当min的值不变,说明所有花的花瓣都为偶数,则输出0
		else printf("%d\n",sum-min);//当所有花瓣的和为偶数时,就减去最小的那个奇数,得到最大的奇数花瓣数
		}
	return 0;
}
运行结果
相关推荐
Sarvartha8 小时前
final 关键字
java·开发语言
yi0118 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
程序员Sunday9 小时前
JavaScript 事件循环面试题,宏任务与微任务怎么执行|Sunday面试指南
开发语言·javascript·面试·校招·事件循环·程序员sunday
zhangzeyuaaa10 小时前
Ruby 多线程、GVL(GIL)与 Mutex 完全指南
开发语言·前端·ruby
谢亮_vipxieliang11 小时前
用 PHP 构建轻量级 REST API:从路由到鉴权的完整实践
开发语言·后端·php
Escalating_xu11 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
思无邪6611 小时前
用 AI 做 JS 逆向:从抓包到复现的完整方法论
开发语言·javascript·人工智能
灯澜忆梦11 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
小蒋观天下11 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
Evand J11 小时前
【电机滤波例程5】渐消因子自适应扩展卡尔曼滤波(EKF),MATLAB。PMSM负载突变下的状态估计。附下载链接
算法·matlab