用枚举法实现
代码如下:
//我是先用全排列生成了全部的串,再写的
全排列生成代码,点击可看
枚举的时候用了减枝,所以可能会稍微快点
但是emmm
看完师兄们的解法只需要0.00sec之后,我这个0.02sec的菜鸡就不知道该说什么好了

代码如下:(会比较好理解)

#include <iostream>
#include <vector>
using namespace std;
#include <cstring>
#include <algorithm>
string strSet[] = {
"ABCDE",
"ABCED",
"ABDCE",
"ABDEC",
"ABECD",
"ABEDC",
"ACBDE",
"ACBED",
"ACDBE",
"ACDEB",
"ACEBD",
"ACEDB",
"ADBCE",
"ADBEC",
"ADCBE",
"ADCEB",
"ADEBC",
"ADECB",
"AEBCD",
"AEBDC",
"AECBD",
"AECDB",
"AEDBC",
"AEDCB",
"BACDE",
"BACED",
"BADCE",
"BADEC",
"BAECD",
"BAEDC",
"BCADE",
"BCAED",
"BCDAE",
"BCDEA",
"BCEAD",
"BCEDA",
"BDACE",
"BDAEC",
"BDCAE",
"BDCEA",
"BDEAC",
"BDECA",
"BEACD",
"BEADC",
"BECAD",
"BECDA",
"BEDAC",
"BEDCA",
"CABDE",
"CABED",
"CADBE",
"CADEB",
"CAEBD",
"CAEDB",
"CBADE",
"CBAED",
"CBDAE",
"CBDEA",
"CBEAD",
"CBEDA",
"CDABE",
"CDAEB",
"CDBAE",
"CDBEA",
"CDEAB",
"CDEBA",
"CEABD",
"CEADB",
"CEBAD",
"CEBDA",
"CEDAB",
"CEDBA",
"DABCE",
"DABEC",
"DACBE",
"DACEB",
"DAEBC",
"DAECB",
"DBACE",
"DBAEC",
"DBCAE",
"DBCEA",
"DBEAC",
"DBECA",
"DCABE",
"DCAEB",
"DCBAE",
"DCBEA",
"DCEAB",
"DCEBA",
"DEABC",
"DEACB",
"DEBAC",
"DEBCA",
"DECAB",
"DECBA",
"EABCD",
"EABDC",
"EACBD",
"EACDB",
"EADBC",
"EADCB",
"EBACD",
"EBADC",
"EBCAD",
"EBCDA",
"EBDAC",
"EBDCA",
"ECABD",
"ECADB",
"ECBAD",
"ECBDA",
"ECDAB",
"ECDBA",
"EDABC",
"EDACB",
"EDBAC",
"EDBCA",
"EDCAB",
"EDCBA"
};struct Node{char x,y;Node(char a='A',char b='A'):x(a),y(b){};
}; int label[120];//总共有120种可能排法,只需要找到最简单的那个就好了
int minAns = 1<<30;
string ans;
string DataSet[101];
int n; int jiao(vector<Node> v1,vector<Node> v2){int a = 0;for (int i = 0; i < v1.size(); ++i) {for (int j = 0; j < v2.size(); ++j){if (v1[i].x == v2[j].x && v1[i].y == v2[j].y){a++;break;}}}return a;
}
int cHelp(int p,int q){//返回第p个序列和第q个序列之间的差距// p在strSet中找,q在DataSet中找 vector<Node> v1,v2;//v1放的是strSet[p]的二元子串;v2放的是v2放的是DataSet[q]的二元子串 for (int i = 0; i < 4;++i){for (int j = i + 1; j < 5; ++j){v1.push_back(Node(strSet[p][i], strSet[p][j]));v2.push_back(Node(DataSet[q][i], DataSet[q][j]));}}// sort and  int num = jiao(v1,v2);return 10 - num;
}
// calculate
void calculate(int temp){ // temp在strSet中  //计算第temp个字符的sum和//实现一个减枝,如果目前加的和已经大于了当前最小的那个,就可以不用来看了for (int j = 0; j < n; ++j){label[temp] +=  cHelp(temp, j);if (label[temp] > minAns) {break;} // 减枝部分 }if (label[temp] < minAns){ans = strSet[temp];minAns = label[temp]; // 这是数值更新部分 }
}
int main(){while (cin >> n && n){for (int i = 0; i < n; ++i){cin >> DataSet[i];}memset(label,0,sizeof(label));//标记复原为0; minAns = 1<<30;ans = "";//初始化 for (int i = 0; i < 120; ++i){calculate(i);} cout << ans<<" is the median ranking with value "<<minAns<<"."<< endl;}
} 

最后,老套路,宣传一波自己的公众号!(求关注哇!)
本人中大一肥宅,欢迎大家关注,请扫下面的二维码(〃’▽’〃)


如果觉得有帮助的话,可以扫码,赞赏鼓励一下!谢谢!


[SOJ1006] Team Rankings相关推荐

  1. Soj题目分类 python代码)

    正值期末复习,刷点soj放松下 但想看看能不能在找点关于数据结构的题目来做一下. 在网上看到有不少人上传过那些关于部分SOJ题目的描述,但是说实话有些乱 不过我看到有个网页中包含的一个类似文档的东西, ...

  2. 杭电OJ分类题目(1)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(1) HDU Introduction HDU ...

  3. POJ的题目分类(两个版本)

    版本一: 简单题 1000A+B Problem 1001Exponentiation 1003 Hangover 1004 Financial Management 1005 I Think I N ...

  4. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  5. HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  6. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

  7. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  8. Power Rankings Seattle Seahawks leapfrog San Francisco 49ers

    Editor: How do you feel about some PR next week? Me (thinking): Public Relations? Did I do something ...

  9. Visual Studio 2005 Team System下载地址

    注册一个msn就可以去微软下载了,关于替换序列号变成正版的方法我没有试,team suite 我在用,但Team Foundation Server 我还没有安装好 Microsoft Visual ...

最新文章

  1. 计算机程序的思维逻辑 (38) - 剖析ArrayList
  2. SQL Server 2005系列教学(14) 用户管理
  3. 大快网站:如何选择正确的hadoop版本
  4. HUST - 1016 幼儿园小朋友们的难题(水题)
  5. SAP ABAP Netweaver系统的传输请求类型和原始系统的含义
  6. idea javafx添加maven_maven+IDEA+JavaFX+JFoenix
  7. SqlServer中decimal(numeric )、float 和 real 数据类型的区别[转]
  8. Swing中 paint()与paintComponent()的区别
  9. vivox6Android版本,vivo x6有几个版本?vivo x6各版本区别对比评测
  10. GIS:揭开你神秘的面纱
  11. ROSTCM6情感分析结果乱码
  12. WebLogic的安装步骤及部署
  13. html怎么画虚线空心圆,PS怎么画虚线圆圈 一个工具轻松搞定
  14. Mobile - 小米手机如何开通应用分身?应用多开?
  15. 【Ext.Net学习笔记】05:Ext.Net GridPanel的用法(包含Filter、Sorter、Grouping、汇总(Summary)的用法)...
  16. 读博太孤独?你不是一个人!
  17. 01Editor最新破解
  18. 2005年9月10日。
  19. 证明威尔逊(Wilson)定理及其逆定理
  20. 怎么把不能编辑的qlv转换成mp4

热门文章

  1. 关键字static、const、volatile的作用
  2. WINCE6.0+S3C2443下ADC在电池驱动应用
  3. mysql 碎片率_mysql数据碎片太多怎么办?
  4. 多个表关联的查询语句
  5. nginx配置技巧汇总
  6. RMAN无法删除归档日志
  7. gdo图形引擎中的旋转角
  8. Python中MySQLdb的connect的用法
  9. 三层交换网络的各层职责
  10. mysql数据源找不到_mysql报出找不到目标数据源为啥? 同一个方法在其他地方调用正常...