【无标题】
2023-12-17 21:32:20
Fortune Telling
题意
给出一组数并计算这组数的最大奇数和
思路
将一组数输入,计算总和
对数进行冒泡排序
判断总和是否是奇数,不是就减去最小的奇数
坑点
要求一组数中的最大奇数和,而不是两个数的最大奇数和
偶数-奇数=奇数
算法一:冒泡排序
时间复杂度
O(n2)
实现步骤
- x
- x
- x
代码
算法二:XX+XX
时间复杂度
$
实现步骤
首先,定义变量n、jishu、sum,分别表示输入的数字个数、奇数值、总和。
使用cin读取n的值。
定义数组a,大小为n+5,用于存储输入的数字。
使用for循环读取n个数字,并将其累加到sum中。
使用双重循环(冒泡排序)对数组a进行排序,使得数组中的数字按照非递减顺序排列。
使用for循环遍历数组a,找到第一个奇数值,并将其赋值给jishu。
判断sum的奇偶性,如果sum是偶数,则进行进一步判断。
如果jishu不为0,则将jishu从sum中减去。
如果jishu为0,则输出jishu并返回。
输出sum的值。
代码
#include <iostream>
using namespace std;
int main() {
int n,jishu=0;
int sum=0;
cin>>n;
int a[n+5];
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
for(int i=0;i<n;i++){
for(int j=n-1;j>=i;j--){
if(a[i]>=a[j]){
int temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
for(int i=0;i<n;i++){
if(a[i]%2!=0){
jishu=a[i];
break;
}
}
if(sum%2==0) {
if(jishu!=0){
sum-=jishu;
}
else{
cout<<jishu;
return 0;
}
}
cout<<sum;
return 0;
}
文章来源:https://blog.csdn.net/pandawen123/article/details/135050050
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!