NOJ1115路径图排序 【绿色】——较难
来源:互联网 发布:java中构造方法 编辑:程序博客网 时间:2024/05/14 11:26
路径图排序 【绿色】
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 179 测试通过 : 19
总提交 : 179 测试通过 : 19
比赛描述
南邮野生物基金会(NUPT-WF)的志愿者近期去南京老山国家森林公园,寻找住在森林附近濒临灭绝的动物。NUPT-WF志愿者得到一份老山国家森林公园地图,该森林公园包括许多空地,和连接空地的路径。不同种濒危动物住在每条路径上,没有动物住在空地上。
NUPT-WF希望从森林公园找到一些濒危动物。但是它们的路径图太过混乱,因为空地和动物未按特定序列给出。现请你帮助NUPT-WF志愿者给南京老山国家森林公园的路径图排序。
输入
动物以单词表示,空地用数字表示,最多有500个空地。
空地0总是森林公园的入口。输入为未分类的森林公园的路径图。
每一行描述两个空地之间的路径,表示为一对数字和住在路径上的一列动物。
输出
输出为一个排序后的路径图,空地数字从0开始增长,动物名从a到z排序。路径由路径任一端的空地号进行排序。所有住在路径上的动物依字母顺序排序。
样例输入
1 0 puma lynx
2 0 puma
1 2 vole
样例输出
0 1 lynx puma
0 2 puma
1 2 vole
题目来源
“IBM南邮杯”团队赛2009
//路径图排序 【绿色】//string输出有时候不能printf,只能cout,或者加上c_//第一种是string输入,注意结束crtl+z —— AC//第二种是gets的方法的,但是Presentation Error at Test 5,原因未知。。。#include<iostream> #include<set> #include<string> using namespace std; #define SIZE 500 struct Map { set<string> s; }map[SIZE][SIZE]; int main() { int x = -100, y = -100, flag = 0; char str[10];while(scanf("%s",str) != EOF) { if(str[0] >= 'a' && str[0] <= 'z') { map[x][y].s.insert(str); flag = 1; } else { int tmp = 0; if(flag == 1) {x = -100; y = -100; flag = 0;} // init int i = 0; while(str[i] != '\0') { tmp = tmp * 10 + str[i] - '0'; i++; } if(x == -100) { x = tmp; continue; // back to scanf str} else y = tmp; if(x > y) {int tmp=x; x=y; y=tmp;} } } set<string>::iterator it; for(int i=0;i<SIZE;i++) {for(int j=i+1;j<SIZE;j++) { if(!map[i][j].s.empty()) { printf("%d %d",i,j); for(it=map[i][j].s.begin();it!=map[i][j].s.end();it++) cout<<" "<<*it; printf("\n"); } } }return 0; }//附:第二种方法gets输入的,Presentation Error at Test 5/*#include<iostream>#include<string>#include<set>using namespace std;struct Map{set<string> s;}map[500][500];int main(){int x, y;char str[1000];while(scanf("%d %d",&x,&y) != EOF){gets(str);if(x > y) {int tmp=x; x=y; y=tmp;}//printf("%d %d",x,y);//printf("%s\n",str);int i = 1;char tmp[1000] = {0};int num = 0;while(str[i] != '\0'){if(str[i] == ' '){tmp[num++] = '\0';//printf("insert what:%s\n",tmp);map[x][y].s.insert(tmp);num = 0;i++;}elsetmp[num++] = str[i++];}tmp[num++] = '\0';//printf("insert what:%s\n",tmp);map[x][y].s.insert(tmp);}//set<string>::iterator it;for(int i=0;i<500;i++) {for(int j=i+1;j<500;j++) { if(!map[i][j].s.empty()) { printf("%d %d",i,j); for(it=map[i][j].s.begin();it!=map[i][j].s.end();it++) cout<<" "<<*it; printf("\n"); } } }return 0;} */
0 0
- NOJ1115路径图排序 【绿色】——较难
- 南邮 OJ 1115 路径图排序 【绿色】
- NOJ1110奇数排序——超时,看写法,需要较灵活的思维!
- 较快的排序
- poj 1141 Brackets Sequence(区间DP,求最小,输出路径,较难)
- A*算法实现寻找较优路径
- 数学推公式——较难——Codeforces Round #187 (Div. 2)
- 较难的动态规划问题——付款问题,面值任意,可找零
- 较难DP(1227)
- 绿色
- 使用std:sort排序较复杂数据
- 5个数7次比较排序
- 效率较高的冒泡排序
- 5个数7次比较排序
- 效率较高的冒泡排序
- List排序(较实用的一种)
- 效率较高的冒泡排序
- 算法复习-3种较高级排序
- mysqlbinlog查看二进制日志时的一个问题
- Ceph配置参数(一)
- 最大公约数问题
- 9.1-9.30推荐文章汇总
- Eclipse中启动了占用串口的线程,怎样解除串口占用
- NOJ1115路径图排序 【绿色】——较难
- 快速创建卡片式ListView 每个item下方有3D阴影
- Monster Card Game之需求分析
- Android 使用存放在存assets文件夹下的SQLite数据库
- 云端开发环境
- sed更改定界符
- NOJ1118玻璃球 【深蓝】——集合DP
- Android开发兼容性的TabHost
- Android 数据库打包随APK发布 &&另assets与raw的区别(链接)