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 题意:给定一个弦图,求最小染色数.就是用最小数目的颜色进行染色使得任意两个相邻的节 ...
随机推荐
- ASPxGridView-如何在客户端缓存数据
有时候我们可以直接从后台生成一些值缓存到客户端,在用到的时候无需在进行callback进行取值,减少和服务器的交互.下面的例子缓存列"title_id"和"title&q ...
- objective-C学习笔记(四)函数成员:方法(函数)
函数分为: 全局函数(C语言函数) 成员函数(OBJC方法):实例方法 “-” 和类方法“+”的区别 //这里要区别静态变量(类变量).全局函数.常量的区别 OBJC里面,所有方法默认为公有方法.没 ...
- [NOIP1999提高] CODEVS 1047 邮票面值设计(dfs+dp)
dfs出邮票的各种面值,然后dp求解. ------------------------------------------------------------------------------- ...
- iOS现有工程 集成 Cordova/Ionic
首先, 新建 Cordova 项目就不说了, 步骤: http://ionicframework.com/getting-started/ , cordova生成的项目用cdv_project称呼, ...
- [LeetCode]题解(python):005-Longest Palindromic Substring
题目来源: https://leetcode.com/problems/longest-palindromic-substring/ 题意分析: 这道题目是输入一段不超过1000的字符串,输出最长的回 ...
- selenium 学习笔记 ---新手学习记录(5) 问题总结(java)
1.今天遇到个奇葩问题,iframe有两个id相同的(如下图) 使用driver.switchTo().frame(“frmLinkPage1”);这个无法使用了. 后来改用driver.switch ...
- java时间验证工具
可以验证2014-02-21这种错误
- 读书笔记: nodejs API 参考
>> bufferBuffer对象是全局对象Buffer支持的编码方式:ascii, utf8, base64, binarynew Buffer(size)new Buffer(arra ...
- CDLinux环境下WiFi密码破解
> 准备好所需软件以及上篇教程中使用Fbinstool制作的可启动U盘 2 > 解压CDLinux-0.9-spring-0412.iso到U盘的根目录 如图 3 > 打开fbin ...
- software quality assurance 常见问题收录
1. What is Quality? Quality means, “meeting requirements.” ..Whether or not the product or service d ...