1 ABCDEFGHIJKL 11700519 ZAYEXIWOVU 3072997 SOUGHT 1234567 THEQUICKFROG 0 END
LKEBA YOXUZ GHOST no solution
//暴力水过!简单的字典序问题弄了菜鸟博主半个多小时!
import java.io.*;
import java.util.*;
public class Main
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
while (input.hasNext())
{
int target = input.nextInt();
boolean flag = false;
String str = input.nextLine();
str = str.replaceAll(" ", ""); //去掉字符串前面的空格
if (target == 0 && str.compareTo("END") == 0) //如果满足条件中止程序
break;
char c[] = str.toCharArray(); //字符串转换为字符数组
int a[] = new int[str.length()];
for (int i = 0; i < c.length; i++)
{
a[i] = CMP(c[i]); //字符数组转换为数字数组
}
Arrays.sort(a); //快速排序方法,但是此时数组顺序是从小到大
for (int i = c.length - 1; i >= 0; i--)
{
for (int j = c.length - 1; j >= 0; j--)
{
if (j == i)
continue;
for (int k = c.length - 1; k >= 0; k--)
{
if (k == i || k == j)
continue;
for (int l = c.length - 1; l >= 0; l--)
{
if (l == i || l == j || l == k)
continue;
for (int m = c.length - 1; m >= 0; m--)
{
if (m == i || m == j || m == k || m == l)
continue;
if ((a[i] - (a[j] * a[j]) //代入公式求解
+ (a[k] * a[k] * a[k])
- (a[l] * a[l] * a[l] * a[l])
+ (a[m]* a[m] * a[m] * a[m] * a[m])) == target)
{
flag = true;
char c1 = (char) (a[i] + 'A' - 1);
char c2 = (char) (a[j] + 'A' - 1);
char c3 = (char) (a[k] + 'A' - 1);
char c4 = (char) (a[l] + 'A' - 1);
char c5 = (char) (a[m] + 'A' - 1);
System.out.println(c1 + "" + c2 + "" + c3 + "" + c4 + "" + c5);
break;
}
}
if (flag)
break;
}
if (flag)
break;
}
if (flag)
break;
}
if (flag)
break;
}
if (!flag)
System.out.println("no solution");
}
}
public static int CMP(char c)
{
return ((c - 'A') + 1); //A字符代表的数字符号是1
}
}
HDU-1015-Safecracker(Java && 暴力大法好 && 简单字典序)
原文地址:http://blog.csdn.net/qq_16542775/article/details/45703159