博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva140-暴力枚举
阅读量:6882 次
发布时间:2019-06-27

本文共 2202 字,大约阅读时间需要 7 分钟。

题意:任意一个点都至少有一个点与其相连接,所有的点可以进行任意排列,总排列数为n!.

一个点带宽定义与它相连的点的最远距离,一个排列的带宽定义为,点中最大的带宽,找出带宽最小的那个排列,有多组,输出字典序最小

#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;char v[8];char edge[100][100];int tv = 0;char res[8];int maxl = 0x7fffffff;int com(char r[]){ int max = -1; for(int i = 0; i < tv; i++) { char c = r[i]; for(int j = 0; j < 100; j++) { if(edge[c][j] == '\0') break; char cc = edge[c][j]; int k = 0; for(k = 0; k < tv; k++) { if(r[k] == cc) break; } int l = k - i; l = l < 0 ? l * -1 : l; max = max < l ? l : max; } } if(max < maxl) { maxl = max; memcpy(res, r, sizeof(char) * tv); } return 0;}void dfs(int cur, int vis[], char r[]){ if(cur == tv) { com(r); return; } for(int i = 0; i < tv; i++) { if(vis[i] == 1) continue; vis[i] = 1; r[cur] = v[i]; cur++; dfs(cur, vis, r); cur--; vis[i] = 0; }}void sort(){ for(int i = 0; i < tv; i++) { for(int j = 1; j < tv - i; j++) { if(v[j - 1] > v[j]) { char t = v[j - 1]; v[j - 1] = v[j]; v[j] = t; } } }}int main(){ //freopen("d:\\1.txt", "r", stdin); while (cin) { string str; cin >> str; if(str == "#") break; istringstream is(str); memset(edge, '\0', sizeof(edge)); memset(v, '\0', sizeof(v)); tv = 0; maxl = 0x7fffffff; int index[100]; int mark[100][100]; int mark2[100]; memset(index, 0, sizeof(index)); memset(mark, 0, sizeof(mark)); memset(mark2, 0, sizeof(mark2)); char c; char cc; while (is >> c) { if(c == ':') { continue; } if(c == ';') { is >> cc; if(mark2[cc] == 0) { v[tv++] = cc; mark2[cc] = 1; } continue; } if(tv == 0) { cc = c; mark2[cc] = 1; v[tv++] = cc; continue; } if(mark[cc][c] != 1) { edge[cc][index[cc]++] = c; mark[cc][c] = 1; } if(mark[c][cc] != 1) { edge[c][index[c]++] = cc; mark[c][cc] = 1; } if(mark2[c] == 0) { mark2[c] = 1; v[tv++] = c; } } //枚举 int vis[10]; memset(vis, 0, sizeof(vis)); char r[8]; sort(); dfs(0, vis, r); for(int i = 0; i < tv; i++) cout << res[i] << " "; cout << "-> " << maxl << endl; } return 0;}

  

posted on
2017-10-03 15:27 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/shuiyonglewodezzzzz/p/7623786.html

你可能感兴趣的文章
多线程/线程池20问
查看>>
HBase性能优化方法总结(一):表的设计
查看>>
从异常堆栈中还原 ProGuard 混淆过的代码
查看>>
A20修改顶部状态栏 禁止跳转设置界面
查看>>
Android--多线程之Handler
查看>>
java synchronized用法
查看>>
MySQL开机自动启动的设置方法
查看>>
Spring中@Autowired注解、@Resource注解的区别
查看>>
迭代器
查看>>
【51CTO学院】搜索V3.0内测公告
查看>>
我的友情链接
查看>>
OneNote 2013:可自动实现图片文转字识别功能(OCR)
查看>>
flex学习笔记 皮肤(五) 为titlewindow标题栏添加可以操作的子项
查看>>
安装numpy+mkl
查看>>
第二章—在HTML文件中添加JavaScript
查看>>
CISCO 4503E启用DHCP
查看>>
dockerfile构建镜像
查看>>
进程绑定CPU简单应用
查看>>
将导航栏始终固定在窗口顶部:
查看>>
手机免流量,还会是天方夜谭吗?
查看>>