天天看点

编程之美BOF 16初赛告捷00 之回顾

编程之美初赛过了,进入了复赛。

话说吭哧吭哧2个小时只做出了两道题,也能进复赛,表示还是很开心,然而查看排行榜的时候,也看到了那种2个小时把7道题全部做出来的大神,我也只能膜拜了。

这次比赛有两个区,由于只做出了两道,连第二区的解锁条件都没达到,就简单回顾下第一区的四道题吧。

00 之回顾

00.01

这道题输入为一个一维数组a,返回另一个一维数组b。关系为由小到大的牌序,返回a中每个元素,分别的排序值。

例:

a={5,1,4,1}

b={3,0,2,0}//没有1,因为有并列第0号元素

这题我没有完美解决,思路还是写出来,放在这里吧。要是有更巧妙的思路,欢迎留言。

用访问数组c保存访问过的位置,循环遍历a,每次找出没访问过的数中最小值,然后再循环a,把最小的数的位置设为访问过,并在b中的位置写上其的位置。

public static int[] Puzzle(float[] a)
    {
        int i,j,num;
        float min;
        int n=a.length;
        int []b = new int[n];
        for(i=;i<n;i++)
            b[i]=-;
        while(n!=){
            min = Integer.MAX_VALUE;
            num=;
            for(i=;i<a.length;i++)
            {
                if(a[i]<min && b[i]==-)
                    min=a[i];
            }
            for(i=;i<a.length;i++)
                if(a[i]==min && b[i]==-)
                {
                    b[i]=a.length-n;
                    num++;
                }
            n-=num;
        }
        return b;
    }
           

00.02

老实说,到最后都没有看懂这道题的意思。

00.03

带障碍的迷宫问题。

时间问题,未写出。

输入:起点和终点的位置。

输出:如果能通,返回走了几步,不能的话,返回”no path”

00.04

给出所有n对括号的所有可能的组合。

输入:n

输出:所有可能的组合

import java.util.ArrayList;
 public static String[] Puzzle(int n) {
        // the Strings contain only parentheses
        ArrayList<String> res = new ArrayList<String>(); 
        String s="";
        dfs(n,n,s,res);
        String[] result = new String[res.size()];
        int i=;
        for(String tmp:res){
            result[i++]=tmp;
            System.out.println(tmp);
    }
        System.out.println(result.length);
        return result;
    }

 private static void dfs(int l, int r, String item, ArrayList<String> res)  
 {  
     if(r<l)  
         return;  
     if(l== && r==)  
     {  
         res.add(item);  
     }  
     if(l>)  
         dfs(l-,r,item+"(",res);  
     if(r>)  
         dfs(l,r-,item+")",res);  
 } 
           

就做出了01和04,还是比较遗憾的,因为第三题到后面我看懂了,但是前面消耗时间太长,没空写了。

而且前面的20分钟,提交答案的人太多,导致根本就不返回结果,让人心情也是比较烦躁,影响发挥,哼。

今天继续有比赛,进了复试的不用再做了,但是还是想看看,如果题一样,就努力做做2,3,解锁第二区,看看后面的部分。

不一样我就去做Kaggle了,复赛好像跟机器学习,大数据有关,得提前准备下了哟