Me丿以卿之名

java程序员一枚-_-!

hdu1272 java 穷举法

import java.util.Scanner;


public class P1172 {

 public static void main(String[] args) {
  Scanner sc=new Scanner(System.in);
  while (sc.hasNext()) {
   int n=sc.nextInt();
   if(n==0){
    return;
   }
   int a[]=new int[n+1];
   int b[]=new int[n+1];
   int c[]=new int[n+1];
   for(int i=1;i<=n;i++){
    a[i]=sc.nextInt();
    b[i]=sc.nextInt();
    c[i]=sc.nextInt();
   }
   int count=0;
   int result = 0;
   boolean flag = false;
   for(int i=1000;i<=9999;i++){
    for(int j=1;j<=n;j++){
     flag=judge(i,a[j],b[j],c[j]);
     if(!flag){
      break;
     }
    }
    if (flag) {
     count++;
     result = i;
    }
   }
   if(count==1){
    System.out.println(result);
   }else{
    System.out.println("Not sure");
   }
  }
  
 }

 private static boolean judge(int number, int a, int b, int c) {
  int num1[]=new int[5];
  int num2[]=new int[5];
  boolean mark[]=new boolean[5];
  for(int i=0;i<=4;i++){
   mark[i]=false;
  }
  num1[1]=number/1000;
  num1[2]=(number/100)%10;
  num1[3]=(number/10)%10;
  num1[4]=(number%10);
  
  num2[1]=a/1000;
  num2[2]=(a/100)%10;
  num2[3]=(a/10)%10;
  num2[4]=(a%10);
  int count=0;
  for(int i=1;i<=4;i++){
   if(num1[i]==num2[i]){
    count++;
   }
  }
  if(count!=c){
   return false;
  }
  count=0;
  for(int i=1;i<=4;i++){
   for(int j=1;j<=4;j++){
    if(num1[i]==num2[j]&&!mark[j]){
     mark[j]=true;
     count++;
     break;
    }
   }
  }
  if(count!=b){
   return false;
  }
  return true;
 }
 
}

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangjian_an/article/details/51554572
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭