UVa 140 Bandwidth 例题7-6
2015-08-23 19:32
309 查看
真不想吐槽CSDN,写完的博客发表时一堆乱码,哎,无语啊~~
第二次做,注意字符串的处理和剪枝。
第二次做,注意字符串的处理和剪枝。
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #define LL long long using namespace std; char a[600]; int b[30],map[30][30],fa,flag,cnt,maxn,ans; int save[10],node[10]; int main() { freopen("f.txt","r",stdin); while(gets(a)&&a[0]!='#'){ memset(map,0,sizeof(map)); memset(b,0,sizeof(b)); int len=strlen(a); flag=0; for(int i=0;i<len;i++){ if(a[i]>='A'&&a[i]<='Z'){ b[a[i]-'A']=1; } if(a[i]==':'){ fa=a[i-1]-'A'; flag=1; } else if(flag&&a[i]>='A'&&a[i]<='Z'){ map[a[i]-'A'][fa]=map[fa][a[i]-'A']=1; } else if(a[i]==';'){ flag=0; } } cnt=0; for(int i=0;i<27;i++){ if(b[i]) node[cnt++]=i; } maxn=10; do{ ans=0; for(int i=0;i<cnt;i++){ for(int j=i+1;j<cnt;j++){ if(map[node[i]][node[j]]&&abs(i-j)>ans) ans=abs(i-j); } if(ans>maxn)break; } if(maxn>ans){ maxn=ans; memcpy(save,node,sizeof(node)); } }while(next_permutation(node,node+cnt)); for(int i=0;i<cnt;i++) printf("%c ",save[i]+'A'); printf("-> %d\n",maxn); } return 0; }
相关文章推荐
- java基础-多线程
- 各种语音编码方法,所需要的带宽
- 剑指offer面试题17-合并两个排序的链表
- 剑指offer面试题16-反转链表
- 第3组UI(1)-AdapterView之ListView及MVC设计模式
- Linux学习日记--基础命令(1)--ls,帮助,LFS
- 确定两串乱序同构(Java)
- 走格子/走棋盘问题
- 函数申明和函数表达式
- AVCaptureDevice
- 自考-特殊线性表
- 关于NoSQL与SQL的区别
- 地鼠游戏
- 数据结构基础 层次遍历和中序遍历还原二叉树
- IOS-NSDictionary
- 如何成为一名卓越的前端工程师
- MESSAGE消息发送失败
- js面向对象
- android 自定义view二
- IOS-音乐播放器