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;
}
运行结果
相关推荐
徐小夕5 分钟前
支持1000+用户同时在线的AI多人协同文档JitWord,深度剖析
前端·vue.js·算法
沐怡旸18 小时前
【算法】【链表】328.奇偶链表--通俗讲解
算法·面试
掘金安东尼21 小时前
Amazon Lambda + API Gateway 实战,无服务器架构入门
算法·架构
码流之上1 天前
【一看就会一写就废 指间算法】设计电子表格 —— 哈希表、字符串处理
javascript·算法
用户6120414922131 天前
C语言做的文本词频数量统计功能
c语言·后端·敏捷开发
快手技术1 天前
快手提出端到端生成式搜索框架 OneSearch,让搜索“一步到位”!
算法
CoovallyAIHub2 天前
中科大DSAI Lab团队多篇论文入选ICCV 2025,推动三维视觉与泛化感知技术突破
深度学习·算法·计算机视觉
NAGNIP2 天前
Serverless 架构下的大模型框架落地实践
算法·架构
moonlifesudo2 天前
半开区间和开区间的两个二分模版
算法
moonlifesudo2 天前
300:最长递增子序列
算法