码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 140 (枚举排列) Bandwidth

时间:2015-02-06 00:39:51      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

题意较复杂,请参见原题=_=||

没什么好说的,直接枚举每个排列就好了,然后记录最小带宽,以及对应的最佳排列。

STL里的next_permutation函数真是好用。

比较蛋疼的就是题目的输入了。。

 

还有就是不明白,为什么19、20行注释哪错了??

技术分享
 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 
 4 const int maxn = 10;
 5 
 6 int id[256], letter[maxn];
 7 char in[1000];
 8 
 9 int main()
10 {
11     freopen("in.txt", "r", stdin);
12 
13     while(scanf("%s", in) == 1 && in[0] != #)
14     {
15         int n = 0;
16         for(char ch = A; ch <= Z; ++ch)
17             if(strchr(in, ch) != NULL)
18             {
19                 //id[ch] = n;
20                 //letter[n++] = ch;
21                 id[ch] = n++;
22                 letter[id[ch]] = ch;
23             }
24 
25         int l = strlen(in), p = 0, q = 0;
26         vector<int> u, v;
27         for(;;)
28         {
29             while(p < l && in[p] != :) p++;
30             if(p == l) break;
31             while(q < l && in[q] != ;) q++;
32             for(int i = p+1; i < q; ++i)
33             {
34                 u.push_back(id[in[p-1]]);
35                 v.push_back(id[in[i]]);
36             }
37             p++; q++;
38         }
39 
40         int P[maxn], bestP[maxn], pos[maxn], ans = n;
41         for(int i = 0; i < n; ++i) P[i] = i;
42         do
43         {
44             for(int i = 0; i < n; ++i) pos[P[i]] = i;
45             int bandwidth = 0;
46             for(int i = 0; i < u.size(); ++i) bandwidth = max(bandwidth, abs(pos[u[i]] - pos[v[i]]));
47             if(bandwidth < ans)
48             {
49                 ans = bandwidth;
50                 memcpy(bestP, P, sizeof(P));
51             }
52         }while(next_permutation(P, P+n));
53 
54         for(int i = 0; i < n; ++i) printf("%c ", letter[bestP[i]]);
55         printf("-> %d\n", ans);
56     }
57 
58     return 0;
59 }
代码君

 

UVa 140 (枚举排列) Bandwidth

标签:

原文地址:http://www.cnblogs.com/AOQNRMGYXLMV/p/4276163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!