hdu1709(The Balance)用java会超时

来源:互联网 发布:怎么注销淘宝店铺 编辑:程序博客网 时间:2024/05/31 05:28

hdu1709

思路:也是由给定的几个数组合成其他数,就想到用母函数,但是这里要多考虑有加有减的情况。

import java.util.*;class Main{public static void main(String args[]){final int max=10005;Scanner sc=new Scanner(System.in);while(sc.hasNext()){int n=sc.nextInt();int[] quality=new int[110];int total=0;for(int i=0;i<n;i++){quality[i]=sc.nextInt();total+=quality[i];}int[] result=new int[max];int[] change=new int[max];result[0]=1;result[quality[0]]=1;for(int i=1;i<n;i++){for(int j=0;j<=total;j++){for(int k=0;k+j<=total&&k<=quality[i];k+=quality[i]){if(k>=j){//考虑组合时的相减情况change[k-j]+=result[j];}else{change[j-k]+=result[j];}change[j+k]+=result[j];}}for(int j=0;j<=total;j++){result[j]=change[j];change[j]=0;}}int[] numb=new int[max];int k=0;for(int i=1;i<=total;i++){if(result[i]==0){numb[k++]=i;}}System.out.println(k);if(k!=0){for(int i=0;i<k-1;i++){//控制最后一个空格System.out.print(numb[i]+" ");}System.out.println(numb[k-1]);}}}}
注:用java直接去交题会超时,因为java里的输入输出都是调用包和类,自然比c话的时间会多!


0 0
原创粉丝点击