CSDN编程竞赛·第26期赛后分享

从第6期开始参加CSDN编程竞赛到26期,转眼就参与了20期,第一次进入前十,很开心!
这次的题目比较简单一些,很多满分的,在此分享一下我的解答给大家~~

1、题目名称:等差数列

一个等差数列是一个能表示成a, a+b, a+2b,…, a+nb (n=0,1,2,3,…)的数列。在这个问题中a是一个非负的整数,b是 正整数。 现给出三个整数,分别表示等差数列的第一项a、最后一项、公差b,求该数列的和。

#include <stdio.h>
int solution(int m, int n, int p){ 
	int result = 0;
	// TODO: 请在此编写代码
	if (m < 0 || n <= 0 || p <= 0 || (n - m) % p > 0) {
		result = -1; 
	} else {
		int num = (n - m) / p + 1; 
		result = (m + n) * num / 2;
	}
	return result; 
}
int main() {
	int m; int n;
	int p;
	scanf("%d", &m);
	scanf("%d", &n); scanf("%d", &p);
	int result = solution(m, n, p);
	printf("%d", result);
	return 0; 
}

2、题目名称:阿波罗的魔力宝石

在希腊神话中,有一个神祗阿波罗。阿波罗拥有一枚能够使人变得更加聪明的神奇宝石。但是,这枚宝石的魔力被封印在 了一个混乱的顺序中,你需要通过排序的方法才能拥有这枚宝石的魔力。 给定一个长度为 N 的整数数组 A,请你将数组 A中的元素进行冒泡排序。

import java.util.ArrayList; 
import java.util.Scanner;
class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str_0 = scan.nextLine().trim(); 
		int n = Integer.parseInt(str_0);
		String str_1 = scan.nextLine();
		String[] line_list_1 = str_1.trim().split(" "); 
		ArrayList<Integer> arr = new ArrayList<>();
		for(int i = 0; i < line_list_1.length; i++) {
			arr.add(Integer.parseInt(line_list_1[i])); 
		}
		scan.close();
		ArrayList<Integer> result = solution(n, arr);
		for (int i = 0; i < result.size(); i++) { 
			System.out.println(result.get(i));
		}
	}
	public static ArrayList<Integer> solution(int n, ArrayList<Integer> arr) { 
		ArrayList<Integer> result = new ArrayList<>();
		// TODO: 请在此编写代码
		for (int i = 0; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) { 
				if (arr.get(i) > arr.get(j)) {
					int t = arr.get(i); 
					arr.set(i, arr.get(j)); 
					arr.set(j, t);
				} 
			}
		}
		result = arr; return result;
	} 
}

3、题目名称:任务分配问题

小明手头上有n个问题,每个问题都有一个数值,表示这个问题的难度;正好小明团队有n个人,每个人都有一个数值,表 示这个人的能力 现在小明要把这n个问题分配给每个人,要求能力更高的人分配到更高难度的问题。

import java.util.ArrayList; 
import java.util.Scanner;
class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str_0 = scan.nextLine().trim(); 
		int n = Integer.parseInt(str_0);
		ArrayList<Integer> arr1 = new ArrayList<>(); 
		for (int i = 0; i < n; i++) {
			String str_1 = scan.nextLine().trim();
			arr1.add(Integer.parseInt(str_1)); }
			ArrayList<Integer> arr2 = new ArrayList<>(); 
			for (int i = 0; i < n; i++) {
				String str_1 = scan.nextLine().trim();
				arr2.add(Integer.parseInt(str_1)); 
			}
		scan.close();
		ArrayList<Integer> result = solution(n, arr1, arr2);
		for (int i = 0; i < result.size(); i++) { 
			System.out.println(result.get(i));
		}
	}
	public static ArrayList<Integer> solution(int n, ArrayList<Integer> arr1, ArrayList<Integer> arr2) { 
		ArrayList<Integer> result = new ArrayList<>();
		// TODO: 请在此编写代码
		for (int i = 0; i < n - 1; i++) {
			for (int j = i + 1; j < n; j++) { 
				if (arr1.get(i) < arr1.get(j)) {
					int t = arr1.get(i); 
					arr1.set(i, arr1.get(j)); 
					arr1.set(j, t);
				} 
			}
		}
		for (int i = 0; i < n; i++) {
			result.add(0); 
		}
		for (int i = 0; i < n; i++) { 
			int index = 0;
			for (int j = 1; j < n; j++) {
				if (arr2.get(j) > arr2.get(index)) { 
					index = j;
				} 
			}
			result.set(index, arr1.get(i));
			arr2.set(index, -1); 
		}
		return result; 
	}
}

4、题目名称:单词逆序

对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成, 你需要将这些部分逆序。 给定一个原字符串A,请返回逆序后的字符串。例,输入”It’s a dog!“输出”dog! a It’s“。

import java.util.ArrayList; 
import java.util.Scanner;
class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		String str = scan.nextLine().trim(); scan.close();
		ArrayList<String> result = solution(str);
		for (int i = 0; i < result.size(); i++){ 
			System.out.print(result.get(i) + " ");
		}
	}
	public static ArrayList<String> solution(String str){ 
		ArrayList<String> result = new ArrayList<>();
		// TODO: 请在此编写代码
		String[] strs = str.split(" ");
		for (int i = strs.length - 1; i >= 0; i--) {
			result.add(strs[i]); 
		}
		return result; 
	}
}

最后

以上就是关于CSDN编程竞赛第26期的所有题目解析,第1题使用了C来解答,后边3题使用了Java来实现,大家在比赛时可以选择自己习惯使用的语言来解答即可。

如果有什么问题,我们可以一起交流讨论解决。

最后,希望可以帮助到有需要的码友。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

it_hao528

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值