【无标题】
2023-12-17 21:55:41
    		Extra-terrestrial Intelligence
题意
给定一 01 序列,试问其中的 1 是否等距.若等距则输出YES,否则输出NO
思路
- 输入一个整数 n,表示序列的长度。
- 初始化一个长度为 n+5 的整数数组 a,用于存储输入的序列。
- 使用嵌套循环对数组 a 进行排序,排序规则是 a[i] >= a[j]。
- 遍历排序后的数组 a,找出第一个奇数,并记录其值到变量 jishu。
- 如果序列的和 sum 是偶数,且 jishu 不为 0,则从 sum 中减去 jishu 的值。
- 输出最终的结果。
坑点
没有检查序列中是否有奇数,直接去寻找第一个奇数,可能会导致程序出错
算法一:
时间复杂度
O(n ^2 )
实现步骤
定义一个整数数组 a,用于存储输入的序列。
使用循环输入序列的长度 n 和数组 a 的值。
使用嵌套循环对数组 a 进行排序。
遍历排序后的数组 a,找出第一个奇数,并记录其出现次数到变量 jishu。
如果序列的和是偶数,且 jishu 不为 0,则从和中减去 jishu 的值。
输出最终的结果。
代码
#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/135049863
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!