精华内容
下载资源
问答
  • 蓝桥杯算法训练答案

    2018-08-22 17:35:47
    蓝桥杯练习系统算法训练答案,参加蓝桥杯的同学不可多得的资料,里面的题目全部使用java语言实现,其他语言也可以参考
  • 邓俊辉算法训练

    2019-03-18 23:46:25
    邓俊辉算法训练营第三期视频 失效请留言 失效请留言 邓俊辉算法训练营第三期
  • 新闻个性化推荐算法需要用到的一些训练集数据包含用户编号、新闻编号、浏览时间、新闻标题、详细内容、发表时间
  • 算法训练 RP大冒险

    千次阅读 2020-02-24 15:41:52
    这个题好像没有什么正确的答案吧,可能是我孤陋寡闻了,还望大佬指点。 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);...

    在这里插入图片描述
    这个题好像没有什么正确的答案吧,可能是我孤陋寡闻了,还望大佬指点。

    import java.util.Scanner;
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		int n = scanner.nextInt();
    		if(n > 10)
    			n %= 10;
    		System.out.println((int)(n*Math.random()));
    	}
    }
    
    展开全文
  • Java实现蓝桥杯VIP 算法训练 矩阵乘方

    万次阅读 多人点赞 2019-06-18 22:35:13
    import java.util.Scanner; public class 矩阵乘方 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt... int M = scanner.nextInt()...

    在这里插入图片描述

    import java.util.Scanner;
    
    
    public class 矩阵乘方 {
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		int N = scanner.nextInt();					//N阶
    		int M = scanner.nextInt();					//M次幂
    		int[][] a = new int[N][N];					//用二维数组a接收矩阵A
    		int[][] c = new int[N][N];					//二维数组c接收矩阵A,并用于存储结果矩阵
    		int i,j;
    		
    		//用二维数组a接收矩阵A
    		for (i = 0; i < N; i++) {
    			for (j = 0; j < N; j++) {
    				a[i][j] = c[i][j]= scanner.nextInt();
    			}
    		}
    		
    		//矩阵乘法
    		if (M == 0) {								//当M=0时结果为单位矩阵
    			for (i = 0; i < N; i++) {
    				for(j = 0; j < N; j++) {
    					if (i == j) {
    						System.out.print(1 + " ");
    					} else {
    						System.out.print(0 + " ");
    					}
    				}
    				System.out.println();
    			}
    		} else if (M == 1) {						//当M=1时结果为原来的矩阵
    			for (i = 0; i < N; i++) {
    				for(j = 0; j < N; j++) {
    					System.out.print(c[i][j] + " ");
    				}
    				System.out.println();
    			}
    		} else {									//当M>1时即为M个矩阵A相乘的结果。
    			for (int m = 1; m < M; m++) {						//最外层控制M次幂,m从1开始或m<M -1都可以,不要乘多一次
    				int[][] temp = new int[N][N];
    				for (i = 0; i < N; i++) {						//i控制行
    					for (j = 0; j < N; j++) {					//j控制列
    						int sum = 0;
    						for (int k = 0; k < N; k++) {
    							sum += a[i][k] * c[k][j];							
    						}										
    						temp[i][j] = sum;
    					}					
    				}
    				c = temp;
    			}			
    			//打印结果矩阵C
    			for (i = 0; i < N; i++) {
    				for (j = 0; j < N; j++) {
    					System.out.print(c[i][j] + " ");
    				}
    				System.out.println();
    			}
    		}		
    	}
    
    }
    
    
    展开全文
  • Java实现 蓝桥杯 算法训练 Cowboys

    千次阅读 2020-04-14 12:07:00
    试题 算法训练 Cowboys 问题描述  一个间不容发的时刻:n个牛仔站立于一个环中,并且每个牛仔都用左轮手枪指着他旁边...

    试题 算法训练 Cowboys

    问题描述
      一个间不容发的时刻:n个牛仔站立于一个环中,并且每个牛仔都用左轮手枪指着他旁边的人!每个牛仔指着他顺时针或者逆时针方向上的相邻的人。正如很多西部片那样,在这一刻,绳命是入刺的不可惜……对峙的场景每秒都在变化。每秒钟牛仔们都会分析局势,当一对相邻的牛仔发现他们正在互指的时候,就会转过身。一秒内每对这样的牛仔都会转身。所有的转身都同时在一瞬间发生。我们用字母来表示牛仔所指的方向。“A”表示顺时针方向,“B”表示逆时针方向。如此,一个仅含“A”“B”的字符串便用来表示这个由牛仔构成的环。这是由第一个指着顺时针方向的牛仔做出的记录。例如,牛仔环“ABBBABBBA”在一秒后会变成“BABBBABBA”;而牛仔环“BABBA”会变成“ABABB”。 这幅图说明了“BABBA”怎么变成“ABABB” 一秒过去了,现在用字符串s来表示牛仔们的排列。你的任务是求出一秒前有多少种可能的排列。如果某个排列中一个牛仔指向顺时针,而在另一个排列中他指向逆时针,那么这两个排列就是不同的。
    输入格式
      输入数据包括一个字符串s,它只含有“A”和“B”。
    输出格式
      输出你求出来的一秒前的可能排列数。
    数据规模和约定
      s的长度为3到100(包含3和100)
    样例输入
    BABBBABBA
    样例输出
    2
    样例输入
    ABABB
    样例输出
    2
    样例输入
    ABABAB
    样例输出
    4
    样例说明
      测试样例一中,可能的初始排列为:"ABBBABBAB"和 “ABBBABBBA”。
      测试样例二中,可能的初始排列为:“AABBB"和"BABBA”。

    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    /** 
     * 思路:动态规划、递归算法
     * ①当前为B,前者为A(AB)
     * dp[st][0]=dp[st-1][1]
     * dp[st][1]=0
     *
     * ②当前为A,前者为B(BA)
     * dp[st][0]=dp[st-1][0]
     * dp[st][1]=dp[st-2][0]+dp[st-2][1]
     *
     * ③当前与前者相同(AA或者BB)
     * dp[st][0]=dp[st-1][0]+dp[st-1][1]
     * dp[st][1]=0
     */
    public class Main {
        public static int dp[][] = new int[105][2];
        public static int cowboys_num;
        public static char[] cowboys_state;
        public static int state_change(int start,int end){
            dp[start][0] = 1;
            dp[start][1] = 0;
            while(start != end){
                start = (start + 1) % cowboys_num;
                //当前为B,前者为A
                if(cowboys_state[start] - 1 == cowboys_state[(start - 1 + cowboys_num) % cowboys_num]){
                    dp[start][0] = dp[(start - 1 + cowboys_num) % cowboys_num][1];
                    dp[start][1] = 0;
                }
                //当前为A,前者为B
                else if(cowboys_state[start] + 1 == cowboys_state[(start - 1 + cowboys_num) % cowboys_num]){
                    dp[start][0] = dp[(start - 1 + cowboys_num) % cowboys_num][0];
                    dp[start][1] = dp[(start - 2 + cowboys_num) % cowboys_num][0] + dp[(start - 2 + cowboys_num) % cowboys_num][1];
                    if(dp[start][1] == 0){
                        dp[start][1] = 1;
                    }
                }
                //当前与前者相同
                else{
                    dp[start][0] = dp[(start - 1 + cowboys_num) % cowboys_num][0] + dp[(start - 1 + cowboys_num) % cowboys_num][1];
                    dp[start][1] = 0;
                }
            }
            return dp[start][0] + dp[start][1];
        }
        public static int state_unchange(int start,int end){
            int t = 2;
            if(cowboys_state[start] == 'B'){
                if(cowboys_state[(start + 1) % cowboys_num] == 'A'){
                    start = (start + 2) % cowboys_num;
                    t += 2;
                }
                else{
                    return 0;
                }
            }
            if(cowboys_state[end] == 'A'){
                if(cowboys_state[(end - 1 + cowboys_num) % cowboys_num] == 'B'){
                    end = (end - 2 + cowboys_num) % cowboys_num;
                    t += 2;
                }
                else{
                    return 0;
                }
            }
            if(t >= cowboys_num){
                return 1;
            }
            dp = new int[105][2];
            dp[start][0] = 1;
            dp[start][1] = 0;
            while(start != end){
                start = (start + 1) % cowboys_num;
                //当前为B,前者为A
                if(cowboys_state[start] - 1 == cowboys_state[(start - 1 + cowboys_num) % cowboys_num]){
                    dp[start][0] = dp[(start - 1 + cowboys_num) % cowboys_num][1];
                    dp[start][1] = 0;
                }
                //当前为A,前者为B
                else if(cowboys_state[start] + 1 == cowboys_state[(start - 1 + cowboys_num) % cowboys_num]){
                    dp[start][0] = dp[(start - 1 + cowboys_num) % cowboys_num][0];
                    dp[start][1] = dp[(start - 2 + cowboys_num) % cowboys_num][0] + dp[(start - 2 + cowboys_num) % cowboys_num][1];
                    if(dp[start][1] == 0){
                        dp[start][1] = 1;
                    }
                }
                //当前与前者相同
                else{
                    dp[start][0] = dp[(start - 1 + cowboys_num) % cowboys_num][0] + dp[(start - 1 + cowboys_num) % cowboys_num][1];
                    dp[start][1] = 0;
                }
            }
            return dp[start][0] + dp[start][1];
        }
        public static void main(String[] args) throws IOException {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
            cowboys_state = bufferedReader.readLine().toCharArray();
            int case_num = 0;
            cowboys_num = cowboys_state.length;
            int start = 0;
            for(int i = 0;i < cowboys_num;i++){
                if(cowboys_state[i] - 1 == cowboys_state[i+1]){
                    start = i;
                    break;
                }
            }
            case_num = state_change((start + 2) % cowboys_num,(start - 1 + cowboys_num) % cowboys_num) +
                    state_unchange((start + 2) % cowboys_num,(start - 1 + cowboys_num) % cowboys_num);
            System.out.println(case_num);
        }
    }
    
    
    展开全文
  • 算法数据结构分解成一块一块相对简单化、脉络化的知识脑图,脉络相连。 引用Elon Musk的话:(引自reddit): 任何一个知识体系都是一棵树,如果要掌握某个领域的关键知识,就需要将知识变成一颗树状结构.有最...

    转载说明:文章内容来自 极客大学算法训练营。
    版权归极客大学、覃超老师以及算法训练营的小伙伴所有。如有涉及侵权,请联系我删除,谢谢。



    精通一个领域的三步走方式

    在这里插入图片描述

    切碎知识点

    1. 切碎知识点

    • 庖丁解牛的故事
    • 将算法数据结构分解成一块一块相对简单化、脉络化的知识脑图,脉络相连。
    • 引用Elon Musk的话:(引自reddit):

    在这里插入图片描述
    任何一个知识体系都是一棵树,如果要掌握某个领域的关键知识,就需要将知识变成一颗树状结构.有最基本的根,然后分出主干、分出枝叶。最后每个知识点和你所熟悉的知识挂靠在一起,成为树状结构。


    人脑不适合记忆、理解孤立的知识,脑图有助于理解。

    2. 如何达到职业顶尖玩家的水平

    如果只是停留在和寝室室友一盘盘打游戏的话,无法达到职业水平
    顶级玩家都要把每部分专门拿出来练习,不断反复练习、刻意练习,可以达到职业顶尖水平。

    在这里插入图片描述

    3. 对数据结构和算法进行分类

    1. 对数据结构进行分类

    在这里插入图片描述

    • 一维数据结构中,高级数据结构是面试的重点
    • 二维数据结构可以看成从一维数据结构中泛化而来

    2. 对算法进行分点

    前三点类似于几何公理,是算法的基础,是所有算法、数据结构的基石。最朴素的运算操作。

    最后将算法化繁为简之后,可以发现它的根本就是找到它的重复单元,基于重复单元泛化成高级数据结构。所有的复杂算法,其实就是找它的重复单元是什么。
    在这里插入图片描述

    五点高级算法:
    在这里插入图片描述


    数据结构和算法学习脑图和学习路线图

    在这里插入图片描述
    在这里插入图片描述
    先默识数据结构,先理解概念点,后面慢慢上手掌握,同时在学习细分知识的时候,不断复习。(比如某一算法的时间复杂度、空间复杂度等)


    刻意练习

    刻意练习

    练习基本功:区别职业选手和业余选手的根本。

    刷算法题的最大误区:做一个算法题目的时候,只做一遍,这就是练习和切题的最大误区。一遍是完全不够的。就像是体育选手,一个动作不可能只做一遍就熟练,也没法将其变成一个条件反射的动作。
    在这里插入图片描述

    • 过遍数:类似于背单词,要多背几遍。
    • 五遍刷题法(五毒神掌)
    • 练习自己的弱项,练习实力上缺陷的地方。走出舒适区。 在这里插入图片描述
      • 拿CS游戏为例: 开黑很爽,专项练习更有助于提高。可以专门开地图练习自己不熟悉的枪(如AK),越是不熟悉而且平时常用,越要多练习。
      • 在学习动态规划的时候,主动刻意练习二十上百道题,逼自己练习,可以达到熟练的水平。
      • 国家队乒乓球练习:反复练习一个动作,先无球,后有球,每天坚持练习,将基本功练扎实。(不要烦leetcode上的题目过于重复,这有助于练习基本功)
      • 职业台球选手,在练习时都是练习很工整的球阵型。就类似于在leetcode上反复不断的练习【典型的】【同一个】题目。不断的过遍数。
        在这里插入图片描述
      • 内心不要浮躁,不要总想着用一些高大上的框架。先将基本功练好,后面在工程中coding才能事半功倍。职业选手的训练方法如此,何况普通人。

    反馈(feedback)

    反馈分为两种:主动反馈和被动反馈
    在这里插入图片描述


    刷题技巧(五毒神掌)

    1. 切题四件套

    在写任何一个题目、面试答一个题目之前,先养成四步系统化的思考题目的方式(切题四件套):

    1. clarification(多看几次题目,和面试官多沟通,确保理解题目准确)
    2. Possible Solutions(非常重要!看到题目之后,想【所有可能的解法】来解题,先过一遍。 不要只用想到的第一种写法去解题),比较不同的方法时间、空间复杂度的区别,从中找出最优解法
      • Compare(space/time)
      • optimal(加强)
    3. Coding 写代码。
    4. Test cases 列举测试样例。

    2. 五毒神掌(五遍刷题法,任何题目都至少刷5遍)

    第1遍:(适合初次练习)

    1. 5分钟:读题+思考(如果基础薄弱,可以给自己10分钟到15分钟时间)。
    • 如果在思考时间内没有任何思路,不知道怎么做的话也很正常。
    1. 直接看解法
    • 适用于上一点中没有任何思路的情况下,有思路的话直接Coding就行了。
    • 同时注意比较多解法,比较解法优劣。
    • 算法的本身是要理解、运用的,而不是自己发明创造
    1. 背诵、默写好的解法。
    • 背诵和默写很重要,在背诵和默写的基础上,可以慢慢做到理解。

    第2遍:(在第1遍的基础之上,这时候没必要看他人的解法了)

    • 马上自己写 – > leetcode上提交,不断Debug修改
    • 多种解法比较、体会–>优化。比较不同解法的时间、内存消耗。
    • 对于执行时间长的Code,多想优化策略。
    • 直到所有不同解法都是优的(领先90%以上,80%也不错)。

    第3遍:(在第2遍的基础之上,过了24小时之后,做前一天做过的题目)

    • 对于不同解法熟练程度不一样,针对性的对自己不是特别熟的题目进行专项练习。

    第4遍:(第3遍过了一周之后,反复回来练习相同的题目,同时对于不熟练的题目进行专项练习) 完成了第4遍,基本上对于相关知识点掌握的比较牢固了


    第5遍 :(针对面试,面试前一个星期、两个星期进行恢复性训练。)

    • 将之前做过的题目再做一遍
    • 时间视面试准备程度而定,按照自己的时间计划安排

    预期达到的效果:看到一道算法题,马上就能产生【肌肉式记忆】,并马上能得到相关的系列解法(解法1、解法2、解法3…,同时清楚知道所有解法的优劣程度)

    展开全文
  • 试题 算法训练 Sticks

    千次阅读 2020-02-06 17:02:48
    Sticks Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 113547 Accepted: 26078 问题描述 George took sticks of the same length and cut them randomly until all parts became at most 50 units ...
  • Java实现 蓝桥杯 算法训练 Anagrams问题

    万次阅读 多人点赞 2019-06-12 16:31:07
    算法训练 Anagrams问题 时间限制:1.0s 内存限制:512.0MB 问题描述  Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和...
  • GACNN:利用遗传算法训练深度卷积神经网络 引言 背景 卷积神经网络 遗传算法 研究方法 稳态遗传算法 世代遗传算法 精英遗传算法 评估结果 结论 代码实现与结果 原文地址: GACNN: TRAINING DEEP CONVOLUTIONAL ...
  • Java实现 蓝桥杯VIP 算法训练 判定数字

    万次阅读 多人点赞 2019-06-20 22:03:05
    算法训练 判定数字 时间限制:1.0s 内存限制:512.0MB  编写函数,判断某个给定字符是否为数字。 样例输入 9 样例输出 yes import java.util.Scanner; public class 判定数字 { public static void main(String...
  • Java实现 蓝桥杯 算法训练 数字游戏

    万次阅读 多人点赞 2020-03-04 09:56:32
    试题 算法训练 数字游戏 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述  给定一个1~N的排列a[i],每次将相邻两个数相加,得到新序列,再对新序列重复这样的操作,显然每次得到的序列都比上一次的序列长度少...
  • Java实现 蓝桥杯VIP 算法训练 字符串编辑

    万次阅读 多人点赞 2019-06-20 22:06:44
    算法训练 字符串编辑 时间限制:1.0s 内存限制:512.0MB 问题描述  从键盘输入一个字符串(长度<=40个字符),并以字符 ’.’ 结束。编辑功能有:  1 D:删除一个字符,命令的方式为: D a 其中a为被删除的字符...
  • Java实现 蓝桥杯VIP 算法训练 P0504

    万次阅读 多人点赞 2019-06-20 17:33:14
    算法训练 P0504 时间限制:1.0s 内存限制:256.0MB  Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,Unclear和Nuclear、Rimon和MinOR都是...
  • 蓝桥杯 算法训练 无权最长链

    千次阅读 多人点赞 2020-04-24 08:24:33
    算法训练 无权最长链 问题描述  给定一个n节点m边的无圈且连通的图,求直径 输入格式  第一行两个数字n,m  接下来m行每行两个数字x,y,代表x,y之间有一条边 输出格式  要求用户的输出满足的格式。  例:...
  • Java实现 蓝桥杯VIP 算法训练 字符删除

    万次阅读 多人点赞 2019-06-20 22:25:14
    算法训练 字符删除 时间限制:1.0s 内存限制:512.0MB 问题描述  编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个...
  • 蓝桥杯 练习系统 算法训练---------题解 C++

    千次阅读 多人点赞 2019-04-08 13:40:45
    算法 枚举、标记数组 ALGO-76 VIP试题 十进制数转八进制数 进制转换 ALGO-77 VIP试题 斜率计算   ALGO-78 VIP试题 确定元音字母位置   ALGO-79 删除数组零...
  • Java实现 蓝桥杯VIP 算法训练 猴子分苹果

    万次阅读 多人点赞 2019-06-17 20:49:33
    问题描述  秋天到了,n只猴子采摘了一大堆苹果放到山洞里,约定第二天平分。这些猴子很崇拜猴王孙悟空,所以都想给他留一些苹果。第一只猴子悄悄来到山洞,把苹果平均分成n份,把剩下的m个苹果吃了,然后藏起来一份...
  • 蓝桥试题 算法训练 字符串逆序 JAVA

    千次阅读 2020-04-30 21:53:35
    资源限制 时间限制:1.0s 内存限制:512.0MB  输入一个字符串,长度在100以内,按相反次序输出其中的所有字符。 样例输入 tsinghua 样例输出 auhgnist 思路:转成字符数组,倒序输出即可。 import java.util....
  • 第0周:调整姿势,迎接算法挑战 ୧(๑•̀◡•́๑)૭ 必读:课前预习清单 邓俊辉:学习算法的一些建议 专题课:扬帆起航,开启算法之旅 解题指南:如何提交作业&栈排序习题解答 习题课:直方图最大面积 习题课...
  • 试题 算法训练 画图 问题描述  在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐标范围从...
  • Java实现 蓝桥杯VIP 算法训练 快速排序

    万次阅读 多人点赞 2019-06-18 22:34:44
    import java.util.Scanner; public class 快速排序 { public static void main(String[] args){ Scanner sc=new Scanner(System.in); int a=sc.nextInt(); int[] ar=new int[a];... ...
  • Java实现 蓝桥杯 算法训练 排序

    千次阅读 2019-06-12 16:38:00
    算法训练 排序 时间限制:1.0s 内存限制:512.0MB 问题描述  编写一个程序,输入3个整数,然后程序将对这三...
  • 试题 算法训练 Bit Compressor 问题描述  数据压缩的目的是为了减少存储和交换数据时出现的冗余。这增加了有效...
  • Java实现 蓝桥杯 算法训练 最大最小公倍数

    万次阅读 多人点赞 2019-06-09 23:33:37
    算法训练 最大最小公倍数 时间限制:1.0s 内存限制:256.0MB 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到...
  • Java实现 蓝桥杯VIP 算法训练 sign函数

    万次阅读 多人点赞 2020-03-05 10:19:09
    试题 算法训练 sign函数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述  给定实数x,输出sign(x)的值。 sign(x)是符号函数,如果x>0,则返回1;如果x=0,则返回0;如果x<0,则返回-1。 输入格式  一...
  • 问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数N。 输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 ...思路:共有三种情况,一是模2等于1,...
  • 毕业6年左右, 在工作中真真不需要使用到算法, 只是不断地谈业务需求, 实现业务功能, 产品上线, 自己是积累了一定的业务能力和一些管理经验. 但是有时静下心来, 对于一个程序媛来讲, 不由得觉得心虚. 于是决定还是要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 434,373
精华内容 173,749
关键字:

算法训练