Sicily-1006
一. 题意
这道题就是考排列组合吧,再来就是比较一下字符的下标算一下两个ranking的距离。然后我总结了一个排列和一个组合的实现方法,这道题直接用的是stl 里面的next_permutation,注意要排好序,好像也有一个previous_permutation的方法的,不过没用过。
二. 过程
- 算出120情况,还好这里是5个字符
- 然后写出计算两个ranking的函数。
- 然后就是算最小值啦。
三.
//
// main.cpp
// sicily-1006
//
// Created by ashley on 14-10-7.
// Copyright (c) 2014年 ashley. All rights reserved.
// #include <iostream>
#include <algorithm>
#include <stack>
using namespace std;
string permutations[];
string guess[];
//获得120种ABCDE的排列情况
void getPermutaions()
{
int counter = ;
string cha = "ABCDE";
string adding;
do {
adding = cha;
permutations[counter++] = adding;
} while (next_permutation(cha.begin(), cha.begin() + ));
}
//查找一个字符在字符串里面的下标
int finding(char c, string s)
{
int len = (int)s.length();
for (int i = ; i < len; i++) {
if (s[i] == c) {
return i;
}
}
return ;
}
//计算两个字符串的差值
int compare(string ss, string r)
{
int len = (int)ss.length();
int sum = ;
for (int i = ; i < len - ; i++) {
for (int j = i + ; j < len; j++) {
if (finding(r[i], ss) > finding(r[j], ss)) {
sum++;
}
}
}
return sum;
}
int main(int argc, const char * argv[])
{
int cases;
getPermutaions();
while (cin >> cases) {
if (cases == ) {
break;
}
int min = * cases;
int key = -;
for (int i = ; i < cases; i++) {
cin >> guess[i];
}
for (int i = ; i < ; i++) {
int diff = ;
for (int j = ; j < cases; j++) {
diff = diff + compare(guess[j], permutations[i]);
}
if (diff < min) {
key = i;
min = diff;
}
}
cout << permutations[key] << " is the median ranking with value " << min << "." << endl;
}
return ;
}
源码
Sicily-1006的更多相关文章
- SCNU 2015ACM新生赛初赛【1006. 3D打印】解题报告
题目链接详见SCNU 2015新生网络赛 1006. 3D打印 .出题思路来自codevs 3288. 积木大赛,属于模拟题. 首先我们把“选择从第L部分到第R部分”理 ...
- sicily 中缀表达式转后缀表达式
题目描述 将中缀表达式(infix expression)转换为后缀表达式(postfix expression).假设中缀表达式中的操作数均以单个英文字母表示,且其中只包含左括号'(',右括号‘)’ ...
- sicily 1934. 移动小球
Description 你有一些小球,从左到右依次编号为1,2,3,...,n. 你可以执行两种指令(1或者2).其中, 1 X Y表示把小球X移动到小球Y的左边, 2 X Y表示把小球X移动到小球Y ...
- PKU 1006
数学问题吧,有兴趣的可以研究一下“中国剩余定理” // 1006.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include < ...
- 【BZOJ】1006: [HNOI2008]神奇的国度
http://www.lydsy.com/JudgeOnline/problem.php?id=1006 题意:在一个弦图中找最少染色数.(n<=10000, m<=1000000) #i ...
- BZOJ 1006 [HNOI2008] 神奇的国度(简单弦图的染色)
题目大意 K 国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即 AB 相互认识,BC 相互认识,CA 相互认识,是简洁高效的.为了巩固三角关系,K 国禁止四边关系,五边关系等 ...
- POJ 1006 - Biorhythms (中国剩余定理)
B - Biorhythms Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Subm ...
- 1006 最长公共子序列Lcs
1006 最长公共子序列Lcs 基准时间限制:1 秒 空间限制:131072 KB 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdks ...
- PAT乙级 1006. 换个格式输出整数 (15)
1006. 换个格式输出整数 (15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 让我们用字母B来表示“百” ...
- BZOJ 1006 神奇的国度(弦图的染色数)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1006 题意:给定一个弦图,求最小染色数.就是用最小数目的颜色进行染色使得任意两个相邻的节 ...
随机推荐
- .Net MVC 入门之Razor语法
Razor语法 Razor是以后MVC项目中都需要用的, 所以在学MVC的基础的时候,我们的目标:要了解熟悉Razor页面的语法结构,做到灵活使用,so我们马上开始学习Razor,也请你们多评论和推荐 ...
- ios7高级
1.实现控制器和视图. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 ...
- ZOJ 3080 ChiBi(spfa)
ZOJ Problem Set - 3080 ChiBi Time Limit: 5 Seconds Memory Limit: 32768 KB watashi's mm is so pr ...
- visual studio 2013 使用IIS Express附加调试MVC5
1.如何找到调试的站点的进程[由于图片无法上传,就不上传图片了] 2.vs运行的时候,在状态栏会存在一个IIS Express 进程,点击显示所有的应用程序,找到想要调试的程序的PID; 3.附加调试 ...
- c++ primer plus 习题答案(6)
p425.1 #include<iostream> #include<cstring> #include<cstdlib> using namespace std; ...
- 删除Lb重复的数,用La输出(顺序表)
#include<stdio.h> typedef int A; const int LIST_INIT_SIZE=100; const int LISTINCRMENT=10; type ...
- 网络编程——TCP连接
TCP在双方传输数据前,发送方先请求建立连接,接收方同意建立连接后才能传输数据.(打电话:先拨号,等对方同意接听后,才能交流)...高可靠性 UDP不需要建立连接(发短信).不可靠,可能出现数据丢失等 ...
- virtualbox 中安装win7虚拟机
下载了win7镜像文件后,在virtualbox中装了几次都提示 windows faied to start,后来在网上找了些解决办法,在这记录下,免得下次又忘了 创建新的虚拟机: 1.安装virt ...
- 03-C语言编码规范和变量
目录: 一.C语言的编码规范 二.变量 三.浮点型float 四.变量名命名规则 五.变量作用域与生命周期 回到顶部 一.C语言的编程规范 1 语句可以分开放在任意位置 2 空格可以让代码更清晰 3 ...
- IOS 表视图(UITableVIew)的使用方法(6)表视图的编辑功能(新增Add)
表视图的新增功能和删除功能虽然目的不同,但是工作流程是相似的 下面列出在处理新增的回调函数时,与删除所不同的逻辑部分代码. 显示下过如下: #pragma mark #pragma mark Tabl ...