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 }



  • 相关阅读:
    Centos网络时好时超时问题解决
    关于C#异常的处理
    获取Excel工作薄中Sheet页(工作表)名集合
    C# shell32.dll 的用法
    C#将Excel数据表导入SQL数据库的两种方法
    Modbus RTU通信协议详解以及与Modbus TCP通信协议之间的区别和联系
    C# 多线程、异步、同步之间的联系与区别
    在C#中使用Panel控件实现在一个窗体中嵌套另一个窗体
    HslCommunication组件库使用说明
    C#判断dataGridView1 点击的是哪一列上的按钮
  • 原文地址:https://www.cnblogs.com/yangce/p/2303030.html
Copyright © 2011-2022 走看看