package poj2718;




import java.util.Scanner;

public class Differ {
 public static int[] data=new int[10];
 
 public static int data_length;
 
 public static int[] quanPai;
 
 public static int[] quanPaiflag;
 public static int minResult;
 
 
 
 
 public static int absoluteValue(){
  int numA=0;
  int numB=0;
  int cut_posi=data_length/2;
  if(data_length%2==0){
   
   for(int i=0;i<cut_posi;i++){
    numA=numA*10+data[quanPai[i]];
   }
   for(int i=cut_posi;i<data_length;i++){
    numB=numB*10+data[quanPai[i]];
   }
  }else{
   
   for(int i=0;i<cut_posi;i++){
    numA=numA*10+data[quanPai[i]];
   }
   for(int i=cut_posi;i<data_length;i++){
    numB=numB*10+data[quanPai[i]];
   }
   
  }
  int tempabsoluteValue=numA-numB;
  return tempabsoluteValue>0?tempabsoluteValue:-tempabsoluteValue;
 }
 
 public static boolean isContiune(int m,int n){
  if(n==0&&m==0)  return false;
  if(n==data_length/2&&m==0) return false;
  return true;
 }
 
 
 public static void dFS(int Layer){
  if(Layer==data_length){
   System.out.print("!!!!!!!!!! ");
   for(int i=0;i<data_length;i++){
     System.out.print(quanPai[i]+" ");
   }
   int tempResult=absoluteValue();
   
   System.out.println("tempResult="+tempResult);
   if(minResult>tempResult)  minResult=tempResult;
   return;
  }
  
  
  
  
  for(int i=0;i<data_length;i++){
      if(quanPaiflag[i]==0){
         quanPai[Layer]=i;
         quanPaiflag[i]=1;
         dFS(Layer+1);
         quanPaiflag[i]=0;
      }
   
  }
 }
 
 
 
 
 public static void main(String[] args){
  
  Scanner sc=new Scanner(System.in);
  String test=sc.nextLine();
  int testCase=test.charAt(0)-'0';
  for(int i=0;i<testCase;i++){
     minResult=0x7fffffff;
     int data_count=0;
     String str=sc.nextLine();
     int stri=0;
     while(stri<str.length()){
      char tempChar=str.charAt(stri++);
      if(tempChar!=' ')  data[data_count++]=tempChar-'0';
     }
     data_length=data_count;
     quanPai=new int[data_length];
     quanPaiflag=new int[data_length];
     /*for(int ii=0;ii<data_length;ii++){
             System.out.print(data[ii]+" ");
        }
        System.out.println(" ");
        System.out.print(data_length);*/
     System.out.println(" ");
     dFS(0);
   
     System.out.println();
     System.out.print(minResult);
    
    
    
    
    
    
    
    
    
    
    
    
  }
  
  
  
 }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值