ZOJ-2207
来源:互联网 发布:淘宝最火的女装店铺 编辑:程序博客网 时间:2024/06/07 05:05
好吧。。这题实在是不想用C写了,本来计算两个串的distance value函数都用C写好了,求全排列没有list用怎么想怎么麻烦,还是JAVA用起来顺手。。几下就搞定了
import java.util.ArrayList;import java.util.Scanner;public class Main{public static void main(String[] args){ArrayList<String> src = perm("ABCDE");Scanner sc = new Scanner(System.in);int n = sc.nextInt();sc.nextLine();while (n != 0){ArrayList<String> input = new ArrayList<String>();for (int i = 0; i < n; i++)input.add(sc.nextLine());int min = Integer.MAX_VALUE;String result = null;for (String s : src){int sum = 0;for (String ins : input)sum += rankValue(s, ins);if (sum < min){min = sum;result = s;}}System.out.format("%s is the median ranking with value %d.\n",result, min);n = sc.nextInt();sc.nextLine();}}static int rankValue(String ss1, String ss2){char[] s1 = ss1.toCharArray();char[] s2 = ss2.toCharArray();int[] index = new int[5];int i, j, count = 0;for (i = 0; i < 5; i++)index[s2[i] - 'A'] = i;for (i = 0; i < 4; i++)for (j = i + 1; j < 5; j++)if (index[s1[i] - 'A'] - index[s1[j] - 'A'] > 0)count++;return count;}static ArrayList<String> perm(String s){ArrayList<String> res = new ArrayList<String>();if (s.length() == 2){res.add(s);res.add(s.charAt(1) + "" + s.charAt(0));}else{for (char c : s.toCharArray()){ArrayList<String> temp = perm(removeChar(s, c));for (String ss : temp)res.add(c + ss);}}return res;}static String removeChar(String s, char c){StringBuilder sb = new StringBuilder();for (char cc : s.toCharArray())if (cc != c)sb.append(cc);return sb.toString();}}
0 0
- ZOJ-2207
- zoj 2207 Team Rankings
- ZOJ 2207 Team Rankings
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- ZOJ
- 哈弗曼树
- 黑马程序员------------------多态
- Java基础19--System--Runtime--Math--Date--Calendar
- hdu 3681 二分枚举答案+dp判断答案
- 最小堆
- ZOJ-2207
- 二叉查找树
- 设计模式之生成器模式
- Javascript实现打印局部网页功能
- 尺取法+LA2678
- 利用Javascript实时显示系统时间
- 二叉树
- 动态链接库和静态链接库
- 网络开源库整理