카드 에서 무 작위 로 다섯 장의 카드 를 뽑 아 순자 인지 아 닌 지 를 판단 하 다.

2498 단어 알고리즘
 
  

/*
copyright@nciaebupt        
  :        5  ,         ,  5        。2-10
     ,A 1,J 11,Q 12,K 13,            。
   :
                   。    ,     5     5   
     。         ,          0,            
      。
            5         。     ,       。   
    ,  0        ,     0         。       
        ,               ,         0     
       ,            。    ,       {0,1,3,4,
5}。 1 3       2,       0,          2     
  。
           :     ,     0   ,            
        。             0   ,           ; 
     。  ,         ,       0      ,      
   。          ,            ,       。

      :
1)  5     0,         (         );
2)        :(max,min    5     0         )
           0, max-min=4,    ,    
            0, max-min=4  3,    ,    
            0, max-min=4  3  2,    ,    
        1)      ,        
*/
#include 
#include 
#define POKER_CNT 14
#define MAX 10000
#define MIN -10000

bool isJunko(int * poker, int len)
{
  if(poker == NULL || len < 0){
    return false;
  }
  int poker_hash[POKER_CNT];
  for(int i = 0; i < POKER_CNT; ++i){
    poker_hash[i] = 0;
  }
  int poker_max = MIN;
  int poker_min = MAX;
  for(int i = 0; i < len; ++i){
    if(poker[i] != 0 && poker_max < poker[i]){
      poker_max = poker[i];
    }
    if(poker[i] != 0 && poker_min > poker[i]){
      poker_min = poker[i];
    }
    poker_hash[poker[i]]++;
  }
  int zero_cnt = poker_hash[0];
  for(int i = 0; i < POKER_CNT; ++i){
    if(poker_hash[i] > 1){
      return false;
    }
  }
  switch(zero_cnt){
    case 0:
      if(poker_max - poker_min == 4){
        return true;
      }
      else{
        return false;
      }
      break;
    case 1:
      if((poker_max - poker_min == 4) || (poker_max - poker_min == 3)){
        return true;
      }
      else{
        return false;
      }
      break;
    case 2:
      if((poker_max - poker_min == 3) || (poker_max - poker_min == 2)){
        return true;
      }
      else{
        return false;
      }
      break;
  }
}

int main(int argc, char ** argv)
{
  int poker[] = {2,3,4,5,6};
  int len = sizeof(poker)/sizeof(poker[0]);
  bool flag = isJunko(poker, len);
  std::cout<


 
  
 
  
 
 

좋은 웹페이지 즐겨찾기