精华内容
下载资源
问答
  • java实现拉丁方块数字

    万次阅读 多人点赞 2019-07-23 19:20:02
    一般认为它的起源是“拉丁方块”,是数学家欧拉于1783年发明的。 如图[1.jpg]所示:6x6的小格被分为6个部分(图中用不同的颜色区分),每个部分含有6个小格(以下也称为分组)。 开始的时候,某些小格中已经填写了...

    “数独”是当下炙手可热的智力游戏。一般认为它的起源是“拉丁方块”,是大数学家欧拉于1783年发明的。

    如图[1.jpg]所示:6x6的小格被分为6个部分(图中用不同的颜色区分),每个部分含有6个小格(以下也称为分组)。
    
    开始的时候,某些小格中已经填写了字母(ABCDEF之一)。需要在所有剩下的小格中补填字母。
    
    全部填好后,必须满足如下约束:
    
    1. 所填字母只允许是A,B,C,D,E,F 中的某一个。
    
    2. 每行的6个小格中,所填写的字母不能重复。
    
    3. 每列的6个小格中,所填写的字母不能重复。
    
    4. 每个分组(参见图中不同颜色表示)包含的6个小格中,所填写的字母不能重复。
    
    为了表示上的方便,我们用下面的6阶方阵来表示图[1.jpg]对应的分组情况(组号为0~5):
    

    022013
    243333
    445555

    用下面的数据表示其已有字母的填写情况:
    

    02C
    03B
    05A
    20D
    35E
    53F

    很明显,第一列表示行号,第二列表示列号,第三列表示填写的字母。行号、列号都从0开始计算。
    
    一种可行的填写方案(此题刚好答案唯一)为:
    

    E F C B D A
    A C E D F B
    D A B E C F
    F B D C A E
    B D F A E C
    C E A F B D

    你的任务是:编写程序,对一般的拉丁方块问题求解,如果多解,要求找到所有解。
    

    【输入、输出格式要求】

    用户首先输入6行数据,表示拉丁方块的分组情况。

    接着用户输入一个整数n (n<36), 表示接下来的数据行数

    接着输入n行数据,每行表示一个预先填写的字母。

    程序则输出所有可能的解(各个解间的顺序不重要)。
    每个解占用7行。

    即,先输出一个整数,表示该解的序号(从1开始),接着输出一个6x6的字母方阵,表示该解。

    解的字母之间用空格分开。

    如果找不到任何满足条件的解,则输出“无解”

    例如:用户输入:
    

    022013
    243333
    445555
    02C
    03B
    05A
    20D
    35E
    53F

    则程序输出:
    

    E F C B D A
    A C E D F B
    D A B E C F
    F B D C A E
    B D F A E C
    C E A F B D

    再如,用户输入:
    002113
    022443
    555553
    04B
    05A
    13D
    14C
    24E
    50C
    51A
    则程序输出:
    D C E F B A
    E F A D C B
    A B F C E D
    B E D A F C
    F D C B A E
    C A B E D F
    D C E F B A
    E F A D C B
    A D F B E C
    B E C A F D
    F B D C A E
    C A B E D F
    D C F E B A
    A E B D C F
    F D A C E B
    B F E A D C
    E B C F A D
    C A D B F E
    D C F E B A
    B E A D C F
    A D C F E B
    F B E A D C
    E F B C A D
    C A D B F E
    D C F E B A
    E F A D C B
    A B C F E D
    B E D A F C
    F D B C A E
    C A E B D F
    D C F E B A
    E F A D C B
    A B D F E C
    B E C A F D
    F D B C A E
    C A E B D F
    D C F E B A
    E F A D C B
    A D B F E C
    B E C A F D
    F B D C A E
    C A E B D F
    D C F E B A
    F E A D C B
    A D B C E F
    B F E A D C
    E B C F A D
    C A D B F E
    D C F E B A
    F E A D C B
    A F C B E D
    B D E A F C
    E B D C A F
    C A B F D E

    package com.liu.ex9;
    
    import java.util.HashSet;
    import java.util.Scanner;
    
    public class Main {
        public static int[][] group = new int[6][6];   //输入分组情况
        public static char[][] result = new char[6][6];  //满足题意的填充结果
        public static int[][] row = new int[6][6];  //检测6行是否均为不同字母
        public static int[][] col = new int[6][6];  //检测6列是否均为不同字母
        public static int[][] set = new int[6][6];  //检测0~5组是否均为不同字母
        public static char[] value = {'A','B','C','D','E','F'};  //填充字母
        public static int count = 0;   //统计最终解个数
        public HashSet<String> hash = new HashSet<String>();
        
        public boolean check() {
            StringBuilder temp = new StringBuilder("");
            for(int i = 0;i < 6;i++) {
                for(int j = 0;j < 6;j++) 
                    temp.append(result[i][j]+" ");
                  temp.append("\n");
            }
            String A = temp.toString();
            if(hash.contains(A))
                return false;
            return true;
        }
        
        public void dfs(int step) {
            if(step >= 37) {
                if(check()) {  //检测是否有重复解
                    count++;
                    System.out.println(count);
                    StringBuilder temp = new StringBuilder("");
                    for(int i = 0;i < 6;i++) {
                        for(int j = 0;j < 6;j++) 
                            temp.append(result[i][j]+" ");
                          temp.append("\n");
                    }
                    hash.add(temp.toString());
                    System.out.print(temp);
                }
                return;
            } else {
                int tempRow = (step - 1) / 6;
                int tempCol = (step - 1) % 6;
                int tempSet = group[tempRow][tempCol];
                for(int i = 0;i < 6;i++) {
                    if(result[tempRow][tempCol] == '-') {
                        char temp = (char) ('A' + i);
                        if(row[tempRow][i] == 0 && col[tempCol][i] == 0 && set[tempSet][i] == 0) {
                            result[tempRow][tempCol] = temp;
                            row[tempRow][i] = 1;
                            col[tempCol][i] = 1;
                            set[tempSet][i] = 1;
                            dfs(step + 1);
                            result[tempRow][tempCol] = '-';  //回溯处理
                            row[tempRow][i] = 0;
                            col[tempCol][i] = 0;
                            set[tempSet][i] = 0;
                            
                        } else {
                            continue;
                        }
                    } else {
                        dfs(step + 1);
                    }
                }
            }
            return;
        }
        
        
        public static void main(String[] args) {
            Main test = new Main();
            for(int i = 0;i < 6;i++)
                for(int j = 0;j < 6;j++)
                    result[i][j] = '-';  //初始化为填充格子字符为'-'
            Scanner in = new Scanner(System.in);
            for(int i = 0;i < 6;i++) {
                String temp = in.nextLine();
                for(int j = 0;j < 6;j++)
                    group[i][j] = temp.charAt(j) - '0';
            }
            int n = in.nextInt();
            in.nextLine();
            for(int i = 0;i < n;i++) {
                String temp = in.nextLine();
                int a = temp.charAt(0) - '0';
                int b = temp.charAt(1) - '0';
                int v = temp.charAt(2) - 'A';
                result[a][b] = temp.charAt(2);
                row[a][v] = 1;    //表示第a行位于第v个的位置,已经填充
                col[b][v] = 1;    //表示第b列位于第v个的位置,已经填充
                int tempSet = group[a][b];   //获取(a,b)小组组号
                set[tempSet][v] = 1;   //表示第tempSet小组第v个位置,已经填充
            }
            test.dfs(1);
        }
    }
    
    展开全文
  • 用Python实现古诗词填字游戏(一)

    千次阅读 2016-01-05 19:23:01
    古诗词做填字游戏是一项有趣的活动,在这里Mr. PosPro用Python写了一个小程序,可以生成简单的填字游戏。
                利用古诗词做填字游戏是一项很有趣的活动,通常的填字游戏都是由几横几竖构成,如下图:

           显然,横竖交叉的位置就是两句诗共有的字。那么,问题来了,如何从众多诗文中找到有共同字的句子呢?

           这里Mr. PosPro用Python写了一个小程序,可以生成简单填字游戏(的模型),程序输出的效果如下:

           可以看到,程序从全唐诗中找到了3句有共同字的句子,并以合适的位置完成了排列。?和#代表了交叉处的字,同时在屏幕下方给出了最后答案。

           下面Mr. PosPro教你如何实现这个程序。程序总体上分为三个部分:
    (一)从TXT文件《全唐诗》中提取有用信息,并按照我们需要的格式保存到新文件中
    (二)实现一个在DOS窗口的输出程序,以便在指定位置输出特定文字
    (三)核心部分,抽取诗句,找到关联的字,确定每一个字的输出位置,并把最后结果交给(二)中实现的程序

            本次主要讨论第(一)部分内容,其它部分的实现请参见后续博客。

           想要做一个古诗词的填字游戏,首先得收集到足够多的诗句作为原料库。可以在网上搜索“全唐诗TXT“,我选择的版本大概有8.2M,内容如图:

               这个版本适合直接阅读,但却不适合用程序处理,所以首先得写一段程序,把这四百多万字的文本文件,转化成我想要形式。对此我是这样设计的:
    1>去掉所有无关信息,只保留标题,作者,诗文内容(标点符号也不要)
    2>一首诗的所有信息都在一行中表达,从左到右依次为:行号,题目,作者,诗句全文,所有内容Tab隔开。
           即,形成如下这个样子


    下面就是具体的程序实现了:
    1.读入文件
    i=3200  # PosPro says:在测试时无需读取全部信息,可以通过此参数调整读入行数,加快测试
    with open('全唐诗.txt',encoding='gbk',errors="ignore") as f:
        for line in f:
        	line=line.rstrip().lstrip() #去除左右空白字符
        	if i>0:
        		analyzeText(line)
        		i-=1
        	else:
            	break
           代码很简单,但有个小技巧可以和大家分享一下:由于文件很大(超过400万字),在测试阶段如果一次性读入的话,会很耗时间。这里用i控制一下读入的行数。毕竟,我们首先要验证的是功能的正确。

    2. analyzeText函数在干什么?
            仔细分析《全唐诗》的文本,可以发现一个特点,即‘卷’和‘【’同时出现的那一行就是诗文的起始,我们应该以此为标志,将程序分为寻找下一首诗,处理标题,处理诗文等几个阶段,代码如下:(PosPro says: Python的优美之处就在于,程序本身和对程序的解释几乎是一体的,你读懂了代码也就理解了代码。当然,我也会加上足够多的注释的。)
    INDEXNUM=0
    EMPTYLINE=0
    STATEFLAG=0
    def analyzeText(line):
    	global INDEXNUM, EMPTYLINE, STATEFLAG
    
    	if line=='':
    		EMPTYLINE+=1
    
    	#PosPro says:构成一个无限循环,只有通过return才能够退出整个函数,读取下一行
    	while (True):  
    		if STATEFLAG==0: 
    		#0:始状态,在此状态下若发现某一行同时包含'卷'和'【',则进入诗句标题
    			if ('卷' in line) and ('【' in line):
    				STATEFLAG=1
    			else:
    				return
    
    		#1: 表示当前句为标题
    		if STATEFLAG==1:
    			INDEXNUM+=1
    			processTitle(line)
    			STATEFLAG=2
    			EMPTYLINE=0
    			return
    
    		#2: 表示正在读取诗文,但需要特别考虑空行和进入下一首诗标题的情况
    		if STATEFLAG==2:
    			if EMPTYLINE>2:
    				processEndPoem()
    				STATEFLAG=0
    				EMPTYLINE=0
    				return
    			elif ('卷' in line) and ('【' in line):
    				processEndPoem()
    				STATEFLAG=1
    				EMPTYLINE=0
    				#PosPro says:此处不return,因为该line还需交由状态1处理
    			else:
    				processPoemText(line)
    				return
    

    3. 分而治之,实现对标题、诗文,以及结束的分别处理。三个函数一起给出:
    def processTitle(line):
    	print (str(INDEXNUM), end='\t') #INDEX就是我自己做的诗文索引
    	idx1=line.find('【')
    	idx2=line.find('】')
    	poemTitle=line[idx1+1:idx2]
    	author=line[idx2+1:]
    	print(poemTitle,end='\t')
    
    	if author.rstrip()=='':
    		print ('佚名',end='\t') #发现有些诗句没有注明作者,那我就自己标一下
    	else:
    		print(author,end='\t')
    
    def processPoemText(line):
    	#此时已深入到诗句中了,要将各种标点符号删掉,并将每句诗文作为list中的一项
    	if not line=='':
    		#如果要以多个不同字符作为分隔符,就必须用
    		everyLine=re.split(',|。',line)
    		for l in everyLine:
    			print (l, end='\t')
    
    def processEndPoem():
    	print ('') #完成一个换行

    4. 等等,不是说要产生一个新文件么?怎么都是在DOS窗口显示的啊?
    别急,这就是Python另一个优雅之处了。在命令行敲完文件名之后,加上">1.txt",想输出到哪里就到哪里



    附:全部代码如下:
    ## Created by PosPro
    ## http://blog.csdn.net/pospro
    
    import re
    i=3200  # PosPro says:在测试时无需读取全部信息,可以通过此参数调整读入行数,加快测试
    
    INDEXNUM=0
    EMPTYLINE=0
    STATEFLAG=0
    
    def processTitle(line):
    	print (str(INDEXNUM), end='\t') #INDEX就是我自己做的诗文索引
    	idx1=line.find('【')
    	idx2=line.find('】')
    	poemTitle=line[idx1+1:idx2]
    	author=line[idx2+1:]
    	print(poemTitle,end='\t')
    
    	if author.rstrip()=='':
    		print ('佚名',end='\t') #发现有些诗句没有注明作者,那我就自己标一下
    	else:
    		print(author,end='\t')
    
    def processPoemText(line):
    	#此时已深入到诗句中了,要将各种标点符号删掉,并将每句诗文作为list中的一项
    	if not line=='':
    		#PosPro says:如果要以多个不同字符作为分隔符,就必须用到re模块了
    		everyLine=re.split(',|。',line)
    		for l in everyLine:
    			print (l, end='\t')
    
    def processEndPoem():
    	print ('') #完成一个换行
    
    def analyzeText(line):
    	global INDEXNUM, EMPTYLINE, STATEFLAG
    
    	if line=='':
    		EMPTYLINE+=1
    
    	#PosPro says:构成一个无限循环,只有通过return才能够退出整个函数,读取下一行
    	while (True):  
    		if STATEFLAG==0: 
    		#0:始状态,在此状态下若发现某一行同时包含'卷'和'【',则进入诗句标题
    			if ('卷' in line) and ('【' in line):
    				STATEFLAG=1
    			else:
    				return
    
    		#1: 表示当前句为标题
    		if STATEFLAG==1:
    			INDEXNUM+=1
    			processTitle(line)
    			STATEFLAG=2
    			EMPTYLINE=0
    			return
    
    		#2: 表示正在读取诗文,但需要特别考虑空行和进入下一首诗标题的情况
    		if STATEFLAG==2:
    			if EMPTYLINE>2:
    				processEndPoem()
    				STATEFLAG=0
    				EMPTYLINE=0
    				return
    			elif ('卷' in line) and ('【' in line):
    				processEndPoem()
    				STATEFLAG=1
    				EMPTYLINE=0
    				#PosPro says:此处不return,因为该line还需交由状态1处理
    			else:
    				processPoemText(line)
    				return
    
    
    with open('全唐诗.txt',encoding='gbk',errors="ignore") as f:
        for line in f:
        	#去除左右空白字符
        	line=line.rstrip().lstrip()
        	if i>0:
        		analyzeText(line)
        		i-=1
        	else:
            	break







    展开全文
  • 最强大脑----汉字女英雄填字游戏研究一、引子江苏卫视的《最强大脑》2014年1月17日星期五第三期第一个节目,是“汉字女英雄”胡小玲所表演的“汉字盲填”,堪称史上最高难度的填字游戏。二、40个词语两字词10个:...

    最强大脑----“汉字女英雄”填字游戏研究

    一、引子

    江苏卫视的《最强大脑》2014117日星期五第三期第一个节目,是“汉字女英雄”胡小玲所表演的“汉字盲填”,堪称史上最高难度的填字游戏,号称"史上最变态的填字游戏"。

    电视上宣称,这款填字游戏需要有:黄蓉的过目不忘的本领,郭德纲的口条,柯南的智慧,菲尔普斯的速度。

    二、40个词语

    两字词10个:非洲、平壤、开方、孟获、孟买、图灵、闪灵、灵芝、魔方、地图

     三字词12个:芝加哥、八神庵、八达岭、八骏图、宁财神、勿忘我、夜明珠、老门东、地安门、绝情谷、丹凤眼、王熙凤

     四字词13个:吹牛老爹、灭绝师太、宁死不屈、宁缺勿滥、魔兽争霸、百舸争流、芝麻开门、有眼无珠、吹毛求疵、九牛一毛、非诚勿扰、买椟还珠、铁血丹心

    五字词5个:东非大裂谷、此事古难全、此地别燕丹、太平洋战争、酒干倘卖无

    三、填图卡

    见下图

    白色填字,蓝色不填。

    四、填字入口分析

    基本理论

    仅仅用了35个字的词语,分别是:3C-3G, 1I—5I , 8D—8H

    5个字的词语,总共只有5,实际用了3

    从这里分析入手,应该比较容易。

    毕竟,排列组合少嘛!

     

    容易逐一穷举,获得局部突破。

    填字入口1

    有一个填图要求是:

    一个5个字的词语的头个字,是4个字的词语的尾字,即3C—3G(填5字)与3D-6D(4)

     分析5个五字词语与13个四字词语,将每个五字词语取出来,再看是否有哪个四字词语符合要求,不难发现仅仅只有:

    太平洋战争、灭绝师太

    满足要求,而且具有唯一性。

     所以,1I—5I填:太平洋战争1F—1I填:灭绝师太

    也很自然的,2I—2J填:平壤

     成语中,第3个字是“”字的,有两个成语,分别是:

    百舸争流、魔兽争霸

    但是,2个字的词语中,没有含有“”字的词语,排除掉。

    5G—5J填:魔兽争霸

     自然,5G—6G填:魔方

    6F—6G填:开方

     

    填字入口2

    有一个填图要求是:

    一个5个字的词语的第二个字,是4个字的词语的首字,即1I—5I(填5字)与1F-4I(4)

     分析5个五字词语与13个四字词语,将每个五字词语取出来,再看是否有哪个四字词语符合要求,不难发现仅仅只有:

    东非大裂谷、非诚勿扰

    满足要求,而且具有唯一性。

     所以,3C—3G填:东非大裂谷3D-6D填:非诚勿扰

    也很自然的,1C-3C填:老门东

     

    因为,5D这个字是,“非诚勿扰”的“”字。

     而这13个四个字词语含“”字,也只有“宁缺勿滥”了,而且也正好是第3个字是“”字。因此,5B—5E填:宁缺勿滥

     3个字的词语中,以“”开头的词语,仅仅只有“宁财神”。

    因此,5B—7B填:宁财神

    接着,7A—7C填:八神庵

     

    填字入口3

    2个四个字的词语,首字是相同的,即1A—4A 1A—4D

     分析这13个四字词语,不难发现,有两组符合要求,分别:

    宁死不屈、宁缺勿滥

    吹牛老爹、吃毛求疵

     但是,因为特点2里,因为1C-3C填:老门东

    所以,1A—4D填:吹牛老爹

    1A—4A填:吃毛求疵

    填字入口4

    2个四个字的词语,尾字是相同的,即10G—10J7J—10J

     分析这13个四字词语,不难发现仅仅只有:

    买椟还珠、有眼无珠

    满足要求,而且具有唯一性。

     2个字的词语中,没有哪儿词语还有“”字,到有一个词语“孟买”还有“

    所以,可以容易知道,

    7J—10J填:买椟还珠

    10G—10J填:有眼无珠

    7I—7J填:孟买

     

    既然,10G—10J填:有眼无珠

    10H这个字是“眼”,那么,8H—10H填:丹凤眼

     所以,8D—8H填:此地别燕丹

    8E—10E填:地安门

    10B—10E填:芝麻开门

    9B—9B填:灵芝

    五、最后几个词语分析

    9B—9B填:灵芝

    7A—7C填:八神庵

     八字开头的3个字的词语有还有2个,分别是:

    八达岭、八骏图

    而只有的“八骏图”符合要求,因为9A—9B可以组成,2个字词语“灵图”。

    而“八达岭”的“”与“”,无法组成符合要求的词语。

     

    六、填字结果图

    这个截图,来自“汉字女英雄”胡小玲实际的填字效果图。

     

    七、心得

    如果,我们不自己亲自填,可能会想:

    《最强大脑》,因为寻找中国最聪明的大脑,填字游戏,一定很难,第一个词语,到底怎么填,不会这么容易。每个词语最终确定,也不会这么轻松敲定下来,可能需要反复,推演个2—3个回合。

     

    但实际上,这一组填字游戏,还真的是比较容易,填字的难度系数,还是很低的。

    八、建议

    百看不如一做,因此,我强烈建议感兴趣的读者,亲自动手花上几分钟,实际做一做。感悟,一定比我更深刻,体验更多。

    九、填字游戏难点

    对普通人而言,就是4分钟将40个词语,记忆的滚瓜烂熟,检索词语能够信手拈来

     

    十、结论

    仔细这么一分析,这题填字,没有想象中的这么难。因为很多填字,具有唯一性

    当然,我这是事后诸葛亮。但是,我想汉字女英雄胡小玲,也应该是这样分析思考的  

    4分钟,记忆40个杂乱无章的词语是关键,尤其要记得滚瓜烂

    熟,填字的时候,能够信手练来,很关键。

    展开全文
  • 志愿了,国内大学计算机专业哪家强?

    千次阅读 多人点赞 2020-07-26 16:28:58
    虽然现在是出来成绩后再报考,和当年我们估分报考不太一样,但难度都挺:选什么学校好呢?选什么专业好呢? 反正我当年报考的时候就挺懵逼的,完全不知道选什么学校和专业。当时发有一本书,叫什么《填报志愿指南...

    先看再点赞,给自己一点思考的时间,微信搜索【沉默王二】关注这个靠才华苟且的程序员。
    本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章。

    去一家餐厅吃炒拉条的时候,发现新来不少年轻的小伙子,看那青葱的年纪,应该是高考结束的学生,出来打个工,不仅能挣个零花钱,还能提前进入社会历练一下,我觉得蛮好的心态。

    感慨时光流逝的同时,我想起来一件非常重要的事情,就是填报志愿。虽然现在是出来成绩后再报考,和当年我们估分报考不太一样,但难度都挺大:选什么学校好呢?选什么专业好呢?

    反正我当年报考的时候就挺懵逼的,完全不知道选什么学校和专业。当时发有一本书,叫什么《填报志愿指南》,结果东南西北仍然不知道去哪。父母跟着瞎捉急,出的主意无非是要不当老师吧?要不修铁路吧?要不你自己看吧?

    自己怎么看?问老师问同学,答案千差万别。最后,只好闭上眼睛,随便选个学校,然后再掏出硬币,随便选个专业。我当时成绩很差,离二本线有点差距,就报了大专,选的机械制造与自动化,并且勾选了「专业可调剂」选项。

    这个选项非常关键,尤其是对那些成绩不是很理想的同学来说,如果专业不服从调剂,那基本上会坑爹到泪流不止——我奉劝各位不是学霸型的同学们,真的不要盲目自信。

    既然选学校和专业这么重要,那我作为一名过来人,尤其是互联网从业多年的叔叔级人物,很有必要给同学们提供一点点建议作为参考。之前有读者反馈我的文章讲道理的比较多,讲如何做的术比较少,那我这次就做出一点积极地回应。

    我的读者群体里,18-25 岁的人群占 60%,也就是说有一部分是需要填报志愿的,有这个需求;另外,如果是已经填报过志愿的读者,我相信过一段时间成绩出来后一定也会被“骚扰”到,到时候你可以把这篇文章扔给亲戚朋友们。

    为此,我还特意在九个读者群里面提了一个问题,群友们的回答真的是令我大开眼界!

    说北大青鸟的那位群友,站住别动,我过去就是一颗小白兔软糖,墙都不服就服你,好不好?说起来北大青鸟(请自觉打钱过来),其实有蛮多渊源的,我回洛阳后曾在本地的一家培训机构的软件部工作过一段时间。最开始招生很难,但自从挂了“北大”这俩字后,就好像镀了金一样,档次瞬间就提高了。

    我一开始也认为,真的是北大旗下的,可见名字的重要性,招牌的重要性!后来知道,确实和北京大学计算机系的杨芙清院士有点关系。这么说吧,北大和北大青鸟的关系,并不等同于 Java 和 JavaScript 之间的关系。

    另外,多说一句,如果没有考上大学,不想复读,对计算机又感兴趣,没有其他选择的话,也是可以放掉戒备心,接受培训的,毕竟是一条出路。我最讨厌那种眼高手低又不愿向现实低头的人,默默找一条出路比在那自怨自艾强得多。

    说清华排名第一的那位群友,我只能说,可以把“吧”字去掉了,或者说,就算是不知道谁是第一,蒙一下清华也很有必要,答案一般不会错。

    上图是网上的一个国内计算机专业大学排名(2019 年更新的),总体看上去,确实也没什么值得反驳的,都是鼎鼎有名的学校,前后排名近两年可能有一些变化,这个没必要较真。如果成绩拔尖,确实属于高端人才的话,选择这些名校,请不要有任何犹豫。

    不得不炫耀一下,我的读者群里都属于卧虎藏龙的人才啊,电子科技大学的敢说自己学校的计算机还行唉,注意用词,还行(全国排名第十一),必须手动狗头一下。瞬间感觉自己也挺牛逼的,我一个大专毕业的,写出来的文章竟然吸引到了很多名牌大学的目光,必须给自己点个赞。

    那成绩既不算差也不算好的,中不溜的,怎么选择学校呢?

    这时候,优先考虑有家庭关系的专业。(我去,这么现实吗?)

    上大学是为了什么?就是为了毕业后能找到一份好的工作。不管是你有多叛逆,多不喜欢靠关系户吃饭,作为过来人,必须要提醒你一句。

    如果你的家庭关系过硬,并且你也确实没有更好的选择,那就不要犹豫。比如说我是程序员,我妹要是愿意做程序员,那么将来就业的时候,以我的影响力,找个朋友内推个岗位还是很容易的。

    其次,选择自己比较感兴趣的专业;最后,考虑比较能挣钱的专业。因为如果专业不感兴趣的话,大学的生活会过得比较肤浅;如果是一些没落的专业,毕业就意味着失业。

    如果是自己感兴趣的专业,大学四年时间,全身心扑上去,毕业后还是能蜕变的;如果碰巧选择了市面上流行的专业,毕业后不愁找到工作。像我,如果十年前没有被调剂,学的机械制造与自动化而不是计算机专业,毕业后基本上就失业了。

    我算是很幸运的那种,一直靠着敲代码养活着。我有一个老铁,复读了两年,最后上的本科,但选的是国文,毕业后不想做教师,改做了销售,基本上等于大学四年浪费了。

    选了专业后,学校的选择就看自己的分数线能不能过关,有没有回旋余地,一定要给自己留条后路,不要盲目大意。

    下面是 2019~2020 教育部最新第四轮计算机科学与技术学科评估的数据,我挑了三个有我们河南的院校的数据,供大家参考一下。

    评估结果为 C+ 的学校:

    河北工业大学、沈阳建筑大学、辽宁师范大学、上海理工大学、上海海洋大学、常州大学、浙江理工大学、浙江师范大学、温州大学、福建师范大学、南昌大学、郑州大学、武汉科技大学、湖南科技大学、广西师范大学、成都信息工程大学、贵州大学、学昆明理工大学、长安大学、青岛大学、西安邮电大学、北京化工大学、北京语言大学、中国传媒大学、中国民航大学、河北大学

    评估结果为 C 的学校:

    北京工商大学、河北工程大学、石家庄铁道大学、中北大学、东北电力大学、长春工业大学、上海师范大学、安徽工业大学、江西师范大学、山东财经大学、河南理工大学郑州轻工业学院、湘潭大学、华南农业大学、西安理工大学、西安工业大学、西北农林科技大学、三峡大学、扬州大学、大连大学、广东工业大学

    评估结果为 C- 的学校:

    中央民族大学、沈阳理工大学、黑龙江大学、上海海事大学、江苏科技大学、华侨大学、东华理工大学、江西理工大学、江西财经大学、河南工业大学河南大学河南师范大学、武汉工程大学、武汉纺织大学、湖北工业大学、长沙理工大学、海南大学、桂林理工大学、西南石油大学、重庆交通大学、西华大学、西南财经大学、西安石油大学、北京信息科技大学、湖南工业大学、海军航空工程学院

    上了大学,并不意味着像高中老师说的那样,真的进入了象牙塔,可以为所欲为。作为过来人,我还是很有必要语重心长地唠叨两句。

    第一,一定要交个女朋友/男朋友。难道不是以学业为重吗?谁说谈恋爱就一定不能好好学习?我有好几个朋友,都是在大学谈恋爱的情况下变得越发的优秀,两个人你侬我侬的同时,互相鼓励,互相督促,反而省去了打游戏、不务正业的时间。

    大学谈恋爱的成本很低,毕竟图不了钱财,只能图个才华和颜值。这对于毕业后到社会上打拼的青年来说,是一针强心剂啊,为了 TA,我必须得承受得起社会的残酷,还要对生活报以微笑。

    第二,一定要学好专业。什么竞赛了一定要参加、什么奖学金了一定要争取。社团什么的,其实是可以少参加的,没必要为了锻炼什么交际能力,强行加入某些社团。交朋友,通过专业课也是可以的。

    计算机专业涵盖软件工程专业,主要培养具有良好的科学素养,系统地、较好地掌握计算机科学与技术包括计算机硬件、软件与应用的基本理论、基本知识和基本技能与方法,能在科研部门、教育单位、企业、事业、技术和行政管理部门等单位从事计算机教学、科学研究和应用的计算机科学与技术学科的高级科学技术人才。

    我作为一名后端的 Java 程序员来说,强烈建议同学们在大学期间多学学算法和数据结构,计算机理论知识,Java 的整个知识体系一定要掌握。

    同时养成分享的好习惯,把自己平常学习的笔记、心得,分享到各大技术网站上,或者 GitHub、码云上,提前打造自己的影响力,这对技术的成长是很有帮助的,说不定大学期间就实现了财务自由,美滋滋啊。

    当然,我的认知是有局限的,所以提供的建议也仅供参考。但我希望这些掏心掏粪(fei)的话,可以帮助到读者朋友们,以及你们身边的同学们。


    我是沉默王二,一枚有颜值却靠才华苟且的程序员。关注即可提升学习效率,别忘了三连啊,点赞、收藏、留言,我不挑,奥利给

    最近,有很多读者问我,有没有大厂的面经?那问二哥就对了,微信搜索「沉默王二」,回复「面试」就有三份我精心为你准备的刷题宝藏,本文 GitHub github.com/itwanger 已收录,欢迎 star。

    展开全文
  • 三流大学和一流大学学生的简历有什么区别?

    万次阅读 多人点赞 2020-09-23 09:17:06
    差距不是一般的
  • 所以实际上也没什么大问题。 Hystrix原理(待查) 通过维护一个自己的线程池,当线程池达到阈值的时候,就启动服务降级,返回fallback默认值 为什么需要hystrix熔断 防止雪崩,及时释放资源,防止系统发生更多的额...
  • 一篇好的牛面试经验

    万次阅读 2017-06-15 10:50:50
    引言: 工作刚刚落实,论文也刚完成,终于有时间对自己的求职历程及求职经验进行总结了。...在这三个月漫长而艰辛的过程中,我付出了多,经历了多,也收获了多。这一路走来,要感谢的人太多太多,尤其要感谢
  • 那就我来吧,我来把这个坑了。后来才发现其实Github上已经有人提出了这个问题,并有了解决方案,亲测有效。 解决方法:  在C:\Users\XXX\.jupyter\custom 路径下,打开custom.css文件,然后找到div....
  • 实现简单,主要用到了生成随机数和导出csv的方法,具体实现如下,需要额外注意的是,生成的邀请码需要校验唯一。 var header = ['邀请码(随机6位 数字+小写字母)']; var content = []; var chars = '...
  • 解决vs code 内置终端,字体间隔过问题。(linux centos7成功) 如图。 去文件-首选项-设置里修改。 “terminal.integrated.fontFamily”: “” 注意此处默认为空白,所以显示的就比较奇怪。 此处我改为"terminal....
  • java实现第三届蓝桥杯方块

    万次阅读 多人点赞 2019-07-29 20:27:09
    一般认为它的起源是“拉丁方块”,是数学家欧拉于1783年发明的。 如图[1.jpg]所示:6x6的小格被分为6个部分(图中用不同的颜色区分),每个部分含有6个小格(以下也称为分组)。 开始的时候,某些小格中已经填写了...
  • 调查问卷有多选项是要求必填的,如果不的话,需要给出友好的提示。用的如下组件:http://layer.layui.com/ 1、之前一直默认用的: function showMessage(msg, domObj) { layer.tips(msg, domObj,{tips:3}...
  • 极小值极值算法-井

    千次阅读 2015-08-24 08:56:56
    用极小值极值算法写的井棋: #include #include #define COM -1 #define MAN 1 #define STEP 9 #define DRAW 0 #define ROW 3 #define COL 3 #define MAX_NUM 1000; struct Move { int x; int y; }; ...
  • UGUI内核探究(十四)Text

    千次阅读 2016-09-18 21:54:44
    Text是UGUI里非常常用的...但其实Text的代码并没有多,因为部分逻辑是在TextGenerator里实现的,而TextGenerator是UnityEngine命名空间下的类。呃(⊙o⊙)…好吧,乐观一点,至少我们就不需要再为底层的细节而苦恼。
  • 3、网络地址很大一部分是由地址掩码决定的。 主机地址: 如IP地址是202.112.14.137,掩码是255.255.255.224 , 网络地址是202.112.14.128,子网号是128。 主机地址是202.112.14.137 。 ...
  • java实现最大五个数

    万次阅读 多人点赞 2019-07-30 09:45:00
    ** 最大5个数** ...但当数据较多时,这样做浪费时间。因为对输出数据以外的数据进行排序并非工程要求,即便是要输出的5个数字,也并不要求按大小顺序,只要找到5个就可以。 以下的代码采用了另外的...
  • 谷歌三核心技术

    万次阅读 2017-03-27 10:52:43
    转自:http://blog.csdn.net/hguisu/article/details/7244798 转自:http://blog.csdn.net/hguisu/article/details/7244981 转自:... 本文转载了Google的三核心技术,作为学习的记录需要的时候及
  • Git常用命令,详细讲解的也不错

    万次阅读 多人点赞 2016-05-22 19:45:48
    需要友情提示的是,你看到的一串类似 2e70fd...376315 的是 commit id (版本号) 在 Git中,用 HEAD 表示当前版本,也就是最新的提交 commit id ,上一个版本就是 HEAD^ ,上上一个版本就是 HEAD^^ ,...
  • 什么是vue.js?(概念清楚)

    万次阅读 多人点赞 2017-06-01 15:35:30
    Vue.js新手入门指南最近在逛各网站,论坛,以及像SegmentFault等编程问答社区,发现Vue.js异常火爆,重复性的提问和内容也多,楼主自己也趁着这个前端的热潮,着手学习了一段时间的Vue.js,目前用它正在做自己...
  • 填填Android lineSpacingExtra 的坑 解决5.0以下设置了 lineSpacingExtra 底部有空白的问题 进坑 当我们使用TextView显示多行的文字时,为了美观,一般会加上行间距,这时就会用到lineSpacingExtra这个属性...
  • iOS崩溃crash解析

    万次阅读 2016-04-15 14:16:54
    iOS崩溃是让iOS开发人员比较头痛的事情,app崩溃了,说明代码写的有问题,这时如何快速定位到崩溃的地方重要。调试阶段是比较容易找到出问题的地方的,但是已经上线的app并分析崩溃报告就比较麻烦了。 之前我总是...
  •  转眼2019了诶,可能有些同学又该问了,哇向阳哥,你这个鸽子放的好,转眼半年了一年都没更新,我也知道啊,说好的源码呢,挖的机械的坑呢?咕咕咕咕我也不想啊,我这不是懒吗!过年有空了,又到了收红包泡妹子玩...
  • win10安装TensorFlow坑笔记

    万次阅读 多人点赞 2017-04-22 11:26:04
    郑重其事的将一台电脑重装了win10,网上找了几个安装攻略,照着安装TensorFlow ...多安装攻略只告诉你怎么做,没告诉你为啥这么做,所以踩到坑时一脸茫然。所以我把坑时的分析及解决问题过程也写出来,供大家参考。
  • 前文分享了Wireshark抓包原理知识,并结合NetworkMiner工具抓取了图像资源和用户名密码,本文将讲解Python网络攻防相关基础知识,包括正则表达式、Web编程和套接通信。本文参考了爱春秋ADO老师的课程内容,这里也...
  • 作者: 龙心尘&&寒小阳 时间:2015年12月。...1、 引言:不要站在岸上学游泳“机器学习”是一个实践的过程。就像刚开始学游泳,你在只在岸上比划一堆规定动作还不如先跳到水里熟悉水性学习来得快。以我们学习“机
  • 什么有些公司技术弱爆了?

    千次阅读 2015-12-12 15:08:37
    什么有些公司技术弱爆了? 楼主自述经历: 今年年初,到一家互联网公司实习,该公司是国内行业龙头。 不过技术和管理方面,却弱爆了。 那里的程序员,每天都在看邮件,查问题工单。 这些问题,多半...
  • 关于南京市大学生办理住房补贴的流程示意图

    万次阅读 热门讨论 2017-12-28 13:05:14
    最近办理大学生住房补贴经历了多波折,说一波N折都不为过,不过还好最后终于是成功申请上了,这中间少不了工作人员的帮助,在这里特别鸣谢一下住建局窗口办理业务的蒋露同学,耐心帮助我办理申请,到12点半结束才...
  • 对于 2 的 N 次方取余,相当于对 2 的 N 次方减一取与运算,这对于高并发分片计算的时候,有用。为了对用户友好,我们让用户设置分片数量的时候可能不限制必须是 2 的 N 次方,但是内部我们设置分片的时候,将其...
  • 排序算法(C语言实现)

    万次阅读 多人点赞 2021-05-09 13:50:26
    问题:为什么要让gap由到小呢? answer:gap越,数据挪动得越快;gap越小,数据挪动得越慢。前期让gap较,可以让数据更快得移动到自己对应的位置附近,减少挪动次数。 注:一般情况下,取序列的一半作为增量...
  • 这是一道面试的算法题,当然可以用多排序算法来实现

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 165,043
精华内容 66,017
关键字:

很大很大的什么填字