zoukankan      html  css  js  c++  java
  • 《算法笔记》6.6小节 问题 A: 任务调度

    这道题我一开始看到的时候,想到的是拓补排序,可是这么菜又这么懒的我怎么可能用呢,既然出现在优先队列里面,那么久一定和他有关了

    可是并没有使用优先队列


    思路:

    对于这道题,我们肯定是对他们定义优先级,然后进行排序了,最后输出。思路还是挺好想der。

    实现:

    首先肯定是一行行的先处理数据啦。咋处理?你不会问神奇海螺吗根据(),这几个符号了做。先定义一个word,来存储字符串。当遇到(,那说明需要先完成的任务输入完了,将word赋值到beg里面去,清空word,然后处理 ), ,当遇到这两个符号的时候,代表输入的后面的字符结束了,可以进行优先级计算了。设置一个map<string,int> bzzs,将bzzs[word] = bzzs[beg] + 1,存储优先级。最后进行排序。注意注意!!!!重点来了:如何对map进行排序呢?

    先将map的值全部存储到一个结构体里面,对结构体排序就行,最后输出就行了。因为map本身按照string排好了,不能按值排序了,所以我们需要转化。

    no body knows codeing better than me

    #include <bits/stdc++.h>
    using namespace std;
    struct node{
    	string name;
    	int lev;
    };
    int n , len;
    string s;
    node zc[10010];	//用来对map进行转化 
    map<string , int> bzzs; //变阻真帅(雾) 
    bool cp(node x , node y){
    	if(x.lev == y.lev) 	return x.name < y.name;
    	return x.lev < y.lev;
    }
    int main(){
    	cin >> n;
    	while(n--){
    		getline(cin , s);
    		string word , beg;
    		for(int j = 0; j < s.length(); j++){
    			if(word == "NULL"){ //直接不管它 
    				word == "";
    				continue;
    			}
    			if(s[j] == '('){	 
    				beg = word;
    				word = "";
    				j++;
    			}
    			if(s[j] == ',' || s[j] == ')'){
    				bzzs[word] = bzzs[beg] + 1;
    				word = "";
    				j++;
    			}
    			word += s[j];
    		}
    	}
    	for(map<string , int>::iterator i = bzzs.begin(); i != bzzs.end(); i++){
    		len++;
    		zc[len].name = i -> first;
    		zc[len].lev = i -> second;
    	}
    	sort(zc + 1 , zc + len + 1 , cp);
    	for(int i = 1; i <= len; i++) cout << zc[i].name << " ";
    	return 0;
    }
    /*
    4
    Task0(Task1,Task2)
    Task1(Task3)
    Task2(NULL)
    Task3(NULL)
    */
    
    
    

    悄悄话:其实我的代码不输入最后一个数据的(大雾),但还是A了,可能因为前面的数据已经可以决定优先级了吧XD

  • 相关阅读:
    Oracle 跟踪sql 方法2
    [原] 通过客户端工具连接MySQL问题解决
    [原]文件比较小技巧
    JQuery上传插件Uploadify使用详解(转)
    sql 批量插入多条记录
    LinkButton中使用CommandArgument传递参数
    assembly、using(import)的区别(转)
    Ajax UpdatePanel 回传后滚动条位置变更解决方法
    Asp.net 动态加载css与js总结
    Treeview 分级加载方法
  • 原文地址:https://www.cnblogs.com/bzzs/p/13048047.html
Copyright © 2011-2022 走看看