本文主要是介绍hdu 1015,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这是第一次用java搞acm,第一次提交时CE。后来才知道类名必须是Main,果断AC。另外发现数组调用的equals()是Object里面未经改写的方法,比较的是引用。
ps:一个简单的dfs。
import java.util.Arrays;
import java.util.Scanner;
public class Main
{
private static char ch[];
private static String str;
private static int arr[],temp[],target;
private static boolean found=false;
private static int pow(int a,int b)
{
int tem=1;
for(int i=0;i<b;i++)
{
tem*=a;
}
return tem;
}
private static boolean dfs(int n)
{
if(found)
{
return found;
}
if(n==5)
{
if(temp[0]==temp[1] || temp[1]==temp[2] || temp[2]==temp[3] || temp[3]==temp[4] || temp[4]==temp[0])
{
return false;
}
if(temp[0]-pow(temp[1],2)+pow(temp[2],3)-pow(temp[3],4)+pow(temp[4],5)==target)
{
for(int k=0;k<5;k++)
System.out.printf("%c",temp[k]+64);
System.out.println();
found=true;
return found;
}
}
else
{
for(int i=0;i<arr.length;i++)
{
temp[n]=arr[i];
dfs(n+1);
}
}
return found;
}
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
while(true)
{
target=cin.nextInt();
str=cin.next();
ch=str.toCharArray();
if(target==0 && str.equals("END"))
return;
Arrays.sort(ch);
arr=new int[ch.length];
temp=new int[5];
for(int i=0;i<arr.length;i++)
{
arr[i]=ch[ch.length-1-i]-64;
}
if(!dfs(0))
{
System.out.println("no solution");
}
found=false;
}
}
}
这篇关于hdu 1015的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!