UVA
来源:互联网 发布:平安委外管理岗 知乎 编辑:程序博客网 时间:2024/06/03 10:18
思路:存储所有路径,全排列所有点。
#include <iostream>#include <iomanip>#include <algorithm>#include <cstdio>#include <cstring>#include <queue>#include <string>#include <cmath>#include <vector>#include <utility>#include <set>#include <climits>//#pragma comment(linker, "/STACK:1024000000,1024000000")#define INF 2147483647using namespace std;typedef long long ll;typedef pair<char,char > P;int i,j,n;int vis[30];vector <P> v;string s;char flag[10];bool ok1;int main(){ while(cin>>s) { if(s[0]!='#') { char l,r; int num=0; memset(flag,0,sizeof(flag)); memset(vis,0,sizeof(vis)); v.clear(); ok1=false; for(i=0; i<s.size(); i++) { if(s[i]==':') ok1=true; else if(s[i]==';') ok1=false; else { if(!ok1) { l=s[i]; } else { v.push_back(P(l,s[i])); } if(vis[s[i]-'A']==0) { flag[num]=s[i]; num++; vis[s[i]-'A']++; } } } sort(flag,flag+num); char path[10]; memset(path,0,sizeof(path)); int min_=INF; do { int sum=1; int max_=-1; for(i=0; i<num; i++) { for(j=0; j<num; j++) for(int z=0; z<v.size(); z++) if(flag[i]==v[z].first&&flag[j]==v[z].second) if(sum<abs(j-i)+1) sum=abs(j-i); if(max_<sum) max_=sum; } if(min_>max_) { min_=max_; for(i=0;i<num;i++) path[i]=flag[i]; } } while(next_permutation(flag,flag+num)); for(i=0; i<num; i++) { if(i==0) printf("%c",path[i]); else printf(" %c",path[i]); } printf(" -> %d\n",min_); } } return 0;}
阅读全文
1 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 对于解决光标消失的一个解决方法
- codeforces 838A Binary Blocks
- iPhone8要掏空你的身体了!
- 客户端存储
- 【KMP,next树】BZOJ3670 [Noi2014]动物园
- UVA
- LinearRegression Formula deduction
- beego框架的环境搭建
- java Iterator 迭代器
- JavaScript学习笔记(决策语句)
- Validate Binary Search Tree问题及解法
- 网游变态功能
- 排队买饭
- poj2912Rochambeau 枚举+带权并查集