奇数单增序列

Description

给定一个长度为N(不大于500)的正整数序列,请将其中的所有奇数取出,并按升序输出。

Input

共2行:
第1行为 N;

第2行为 N 个正整数,其间用空格间隔。

Output

增序输出的奇数序列,数据之间以逗号间隔。数据保证至少有一个奇数。

Sample Input

10
1 3 2 6 5 4 9 8 7 10

Sample Output

1,3,5,7,9

python解法

# 读取第一行的N值
N = int(input().strip())

# 读取第二行的N个正整数,并转换为整数列表
numbers = list(map(int, input().strip().split()))

# 使用列表推导式提取所有奇数,并排序
# odd_numbers = sorted([num for num in numbers if num % 2 != 0])
odd_nums_list = []  # 初始化一个空列表来存储奇数
for num in numbers:  # 遍历 numbers 列表中的每一个元素
    if num % 2 != 0:  # 判断 num 是否为奇数
        odd_nums_list.append(num)  # 如果是奇数,则将其添加到 odd_nums_list 列表中

# 排序:对包含所有奇数的列表进行排序
sorted_odd_nums = sorted(odd_nums_list)

# 赋值:将排序后的奇数列表赋值给 odd_numbers
odd_numbers = sorted_odd_nums

# 使用join方法将排序后的奇数列表转换为以逗号分隔的字符串,并输出
print(','.join(map(str, odd_numbers)))

c++解法

#include<bits/stdc++.h> // 这是一个常用的头文件
using namespace std;    // 使用标准命名空间

int a[500]; // 定义一个整型数组a,可以存储500个整数

int main()
{
    int n;
    bool flag=1; // 定义一个布尔变量flag,初始值为1,用于控制输出格式(是否添加逗号)

    cin>>n; // 从标准输入读取一个整数n,表示数组a的元素个数

    for(int i=1;i<=n;i++)cin>>a[i]; // 从标准输入读取n个整数,并存储在数组a中(注意:通常数组索引从0开始,但这里从1开始)

    // 以下是对数组a进行冒泡排序的代码
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n-i;j++) // 内层循环中,每次循环都比较相邻的两个元素,并交换位置(如果前一个比后一个大)
        {
            if(a[j]>a[j+1])
            {
                swap(a[j],a[j+1]); // 使用swap函数交换两个元素的位置
            }
        }
    }

    // 以下代码用于输出数组a中的所有奇数元素,并用逗号分隔
    for(int i=1;i<=n;i++)
    {
        if(a[i]%2==1) // 判断当前元素是否为奇数
        {
            if(flag==1) // 如果是第一个奇数,则直接输出,并设置flag为0,表示后面再输出奇数时要加逗号
            {
                cout<<a[i];
                flag=0;
            }
            else cout<<","<<a[i]; // 如果不是第一个奇数,则在前面加上逗号后再输出
        }
    }

    return 0; // 主函数返回0,表示程序正常结束
}
如果您有更优的解法,欢迎在评论区一起交流噢~
阅读剩余
THE END