Showing posts with label Algorithm. Show all posts
Showing posts with label Algorithm. Show all posts

c++ - How to use bucket sort to sort a set of strings - Stack Overflow



c++ - How to use bucket sort to sort a set of strings - Stack Overflow
Sort by the first character. This gives you some number of "buckets." Sort each nonempty bucket starting with the second character. Repeat until the whole thing is sorted.

Java Bucket Sort on Strings
public void bucketSort(String[] words)
{
    int maxlength=0;
    for(int i=0;i<words.length;i++)
    {
        words[i] = words[i].toUpperCase();
        if(maxlength<words[i].length())
            maxlength = words[i].length();
    }
    for(int j=maxlength-1;j>=0;j--)
    {
        Vector<Vector<String>> map = new Vector<Vector<String>>();
        for(int i=0;i<27;i++)
        {
            map.add(null);
        }
        for(int i=0;i<words.length;i++)//Add words of of length j or greater to map(which is bucket here)
        {

            if(words[i].length()>j)
            {
                int val = (int)words[i].charAt(j) -65;
                if(map.get(val)!= null)
                {
                    map.get(val).add(words[i]);
                }
                else
                {
                    Vector<String> vecot = new Vector<String>();
                    vecot.add(words[i]);
                    map.add(val, vecot);
                }
            }
            else///Add words of of length<j to bucket 0
            {
                if(map.get(0) != null)
                {
                    map.get(0).add(words[i]);
                }
                else
                {
                    Vector<String> vecot = new Vector<String>();
                    vecot.add(words[i]);
                    map.add(0, vecot);
                }

            }
        }
        int count =0;
        for(int i=0;i<map.size();i++)
        {

            if(map.get(i)!=null)
            {
                for(int k=0;k<map.get(i).size();k++)
                {
                 words[count]=map.get(i).get(k); 
                 count++;
                }
            }
        }
        System.out.println("Next set :");
        for(int i=0;i<words.length;i++)
        {
            System.out.println(words[i]);
        }
    }
}
Read full article from c++ - How to use bucket sort to sort a set of strings - Stack Overflow

Tanky Woo >> 《算法导论》学习总结--【目录】



(上面没提到的章节,主要都是太理论化或者我自己也没弄明白的。比如17章,27章,34章等)

Read full article from Tanky Woo » 《算法导论》学习总结—【目录】

网易有道2013校园招聘二面试题-项目安排[动态规划]



http://www.acmerblog.com/offer-163-1171.html
小明每天都在开源社区上做项目,假设每天他都有很多项目可以选,其中每个项目都有一个开始时间和截止时间,假设做完每个项目后,拿到报酬都是不同的。由于小明马上就要硕士毕业了,面临着买房、买车、给女友买各种包包的鸭梨,但是他的钱包却空空如也,他需要足够的money来充实钱包。万能的网友麻烦你来帮帮小明,如何在最短时间内安排自己手中的项目才能保证赚钱最多(注意:做项目的时候,项目不能并行,即两个项目之间不能有时间重叠,但是一个项目刚结束,就可以立即做另一个项目,即项目起止时间点可以重叠)。
这里按结束的时间先排序。(也可以按开始时间排序,遍历的次序需要颠倒一下)
===> there is problem in the code,
04int n;
05class P{
06public:
07    int st,ed,value;
08};
09P p[10001];
10int dp[10001]; //dp[i]安排前i个项目,最多能到得到的最大value
11bool cmp(const P & p1, const P & p2){
12    return p1.ed < p2.ed;
13}
14 
15int main(){
16    int n, i, j;
17    //freopen("in.txt", "r", stdin);
18    while(scanf("%d", &n) != EOF){
19        for(i=1; i<=n; i++){
20            scanf("%d %d %d", &p[i].st, &p[i].ed, &p[i].value);
21            dp[i] = 0;
22        }
23        sort(p+1, p+n+1, cmp); //按结束时间排序是重点
24        dp[0] = 0;
25        for(i=1; i<=n; i++){
26 
27            //查找最的j,可满足当前的i。都不满足就j=0
28            for(j=i-1; j>0; j--){
29                if(p[i].st >= p[j].ed)
30                    break;
31            }
32            dp[i] = dp[j] + p[i].value;
33            if(dp[i] < dp[i-1])
34                dp[i] = dp[i-1];
35        }
36        printf("%d\n",dp[n]);
37    }
38    return 0;
39}


Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts