hdu 1015

来源:互联网 发布:电算化会计软件下载 编辑:程序博客网 时间:2024/05/16 11:53

这是第一次用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;        }    }}


 

 

原创粉丝点击