算法相关 资源和一些以前记的题

这篇博客整理了算法比赛中的部分题目和解题思路,包括DFS、DP等算法的应用,并提供了HDU、POJ等算法题库的简介,以及一些算法网站的推荐,如Codeforces和LeetCode。
摘要由CSDN通过智能技术生成

算法比赛就此不打啦,学了点皮毛混了个省一国二就跑路了(蓝桥杯退役也太真实了),要是能早点知道算法比赛这类东西就好了,大一大二也不至于这么混过去,这样相识与分别也挺奇妙的,因为也没多久,也没什么好怀念的了。把之前写过的算法的东西全放这里吧,纪念一下吧。

各种算法网站:
HDU——经典航电,题目杂,综合,没有错误提示
POJ——北大,跟航电区别不大
USACO——美国算法题库,题目偏难,有脑筋急转弯的感觉,不适合练手但适合练脑,有错误提示
Codeforces——打CF上分很刺激,有错误提示
Hackerrank——分奴必备
牛客竞赛——天天抽奖永远不会成为欧皇,比赛多,国内体验较佳
Vjudge——帮你做了各种Online Judge总结了
各OJ题目分类总结

赛码——面试算法题
LeetCode——领扣,面试算法题,分类详细学习方便,有错误提示

DFS

Problem description

概率论老师:听懂了么?
大家:。。。
概率论是门有趣的学科,但我不想凭概率挂科,是时候认真看看书了
书里有一道这样的题目:

一俱乐部有5名一年级学生,2名二年级学生,3名三年级学生,2名四年级学生。
在其中任选5名学生,求一、二、三、四年级学生均包含在内的概率。
概率论是个细活,不过我比较粗心,经常漏掉几种情况而算错
现在我想让你编个程序列举出所有符合要求(各年级学生均包含在内)的情况

Input

首先输入一个t表示有t组样例
每组样例有两行输入
第一行输入N(1<=N<=6)表示有N个年级,紧接着按顺序输入从1到N每个年级对应的学生数量m(1<m<50)
第二行输入要抽选的学生人数n(N<=n<=总人数)

Output

用n代表一个属于n年级的学生
例如:1 2 3 4 4 代表1名一年级、1名二年级、一名三年级和两名4年级的学生的组合
对于每组样例,每种组合按年级顺序输出对应学生并用空格隔开(行尾没有多余空格),并按字典序输出所有可能的组合

Sample Input

2
4 5 2 3 2
5
1 4
2

Sample Output

1 1 2 3 4
1 2 2 3 4
1 2 3 3 4
1 2 3 4 4
1 1

简单DFS思路
先从各年级取一个人,然后再DFS各年级的剩下的人,取出来全部后排序即可。
重点在于不能重复计算,所以要从小到大执行。

Java代码

import java.util.Arrays;
import java.util.Scanner;

public class Main {

    static int grades;      //年级数
    static int[] men;       //各年级的人数
    static int num;         //总共需要的人数
    static int[] dfs;       //用于存放选取出来的人
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        while(n-->0){
            grades = sc.nextInt();
            men = new int[grades+1];

            for(int i = 1 ; i <= grades ; i++){
                men[i] = sc.nextInt();
            }
            num = sc.nextInt();
            dfs = new int[num+1];
            for(int i = 1; i <= grades ; i++){
                dfs[i] = i;        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值