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来实现,大家在比赛时可以选择自己习惯使用的语言来解答即可。

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

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

猜你喜欢

转载自blog.csdn.net/guorenhao/article/details/128943423