zoukankan      html  css  js  c++  java
  • 九度 1363 欢乐斗地主

    http://ac.jobdu.com/problem.php?id=1363

    按规则来就可以 注意,可能有多副牌 一开始按一副牌处理的,一个数据也过不了 另外,还有 每次找两个相同的牌时,从3开始找,找不到再去1和2中找。

    代码写的比较乱,大概是好久不写的缘故.

      1 #include <stdio.h>
    2 #include <stdlib.h>
    3 #include <string.h>
    4 int N;
    5 int num_count[20];
    6 int comp[5];
    7 int main()
    8 {
    9
    10 while(scanf("%d",&N)!=EOF){
    11 int i;
    12 memset(num_count,0,sizeof(num_count));
    13 for(i=0;i<N;i++){
    14 int temp;
    15 scanf("%d",&temp);
    16 num_count[temp]++;
    17 }
    18 for(i=0;i<5;i++)
    19 scanf("%d",&comp[i]);
    20 if(comp[0]==2){
    21 printf("My God\n");
    22 continue;
    23 }
    24 else if(comp[0]==1){
    25 if(num_count[2]<3)
    26 printf("My God\n");
    27 else{
    28 int num=0;
    29 bool flag=false;
    30 int j;
    31 for(j=3;j<=13;j++){
    32 if((num_count[j]>=2&&j!=2)||(j==2&&num_count[j]>=5)){
    33 flag=true;
    34 num=j;
    35 break;
    36 }
    37 }
    38 if(!flag){
    39 for(j=1;j<=2;j++){
    40 if((num_count[j]>=2&&j!=2)||(j==2&&num_count[j]>=5)){
    41 flag=true;
    42 num=j;
    43 break;
    44 }
    45 }
    46 }
    47 if(flag){
    48 printf("2 2 2 %d %d\n",num,num);
    49 }
    50 else printf("My God\n");
    51 }
    52 }
    53 else{
    54 int j;
    55 bool flag=false;
    56 for(j=comp[0]+1;j<=13;j++){
    57 if(flag)
    58 break;
    59 if(num_count[j]>=3){
    60 int k;
    61 for(k=3;k<=13;k++){
    62 if((num_count[k]>=2&&k!=j)||(k==j&&num_count[k]>=5)){
    63 printf("%d %d %d %d %d\n",j,j,j,k,k);
    64 flag=true;
    65 break;
    66 }
    67 }
    68 if(!flag){
    69 int k;
    70 for(k=1;k<=2;k++){
    71 if((num_count[k]>=2&&k!=j)||(k==j&&num_count[k]>=5)){
    72 printf("%d %d %d %d %d\n",j,j,j,k,k);
    73 flag=true;
    74 break;
    75 }
    76 }
    77 }
    78 }
    79 }
    80 if(!flag){
    81 for(j=1;j<=2;j++){
    82 if(flag)
    83 break;
    84 if(num_count[j]>=3){
    85 int k;
    86 for(k=3;k<=13;k++){
    87 if((num_count[k]>=2&&k!=j)||(k==j&&num_count[k]>=5)){
    88 printf("%d %d %d %d %d\n",j,j,j,k,k);
    89 flag=true;
    90 break;
    91 }
    92 }
    93 if(!flag){
    94 int k;
    95 for(k=1;k<=2;k++){
    96 if((num_count[k]>=2&&k!=j)||(k==j&&num_count[k]>=5)){
    97 printf("%d %d %d %d %d\n",j,j,j,k,k);
    98 flag=true;
    99 break;
    100 }
    101 }
    102 }
    103 }
    104 }
    105 }
    106 if(!flag)
    107 printf("My God\n");
    108 }
    109 }
    110 }



  • 相关阅读:
    日志规范实践
    序列化和反序列化及Protobuf 基本使用
    简述TCP网络编程本质
    笔记:多线程服务器的适用场合(1)
    聊聊同步、异步、阻塞与非阻塞(转)
    《EntrePreneur》发刊词
    make和makefile简明基础
    luogu P3687 [ZJOI2017]仙人掌 |树形dp
    luogu P3172 [CQOI2015]选数 |容斥原理
    luogu P4513 小白逛公园 |线段树
  • 原文地址:https://www.cnblogs.com/yangce/p/2303030.html
Copyright © 2011-2022 走看看