zoukankan      html  css  js  c++  java
  • hdu 1528-Card Game Cheater(贪心算法)

    题意不讲,怕说不清,自己一点点看吧。

    思路是贪心,将每个人的牌按从小到大或(从大到小),我是从小到大排的,

    然后每次从第二摞排中找比第一摞排的那张大且相差最小的就可以了,每次找到就sum++;

    最后sum值就是最优的(贪心思想)。

      1 #include<stdio.h>
      2 #include<algorithm>
      3 #include<iostream>
      4 #include<stdlib.h>
      5 #include<string.h>
      6 #include<math.h>
      7 int f(const void*p,const void*q);
      8 typedef struct pp
      9 {
     10     int x;
     11     int y;
     12 } ss;
     13 int main(void)
     14 {
     15     int n,i,j,k,p,q;
     16     char a[100];
     17     char b[100];
     18     ss kk[100];
     19     ss qq[100];
     20     scanf("%d",&k);
     21     while(k--)
     22     {
     23         scanf("%d ",&n);
     24         gets(a);
     25         gets(b);
     26         int uu=0;
     27         for(i=0; a[i]!=''; i++)
     28         {
     29             if(i%3==0)
     30             {
     31                 if(a[i]=='T')
     32                 {
     33                     kk[uu].x=10;
     34 
     35                 }
     36                 else  if(a[i]=='J')
     37                 {
     38                     kk[uu].x=11;
     39                 }
     40                 else  if(a[i]=='Q')
     41                 {
     42                     kk[uu].x=12;
     43                 }
     44                 else  if(a[i]=='K')
     45                 {
     46                     kk[uu].x=13;
     47                 }
     48                 else if(a[i]=='A')
     49                 {
     50                     kk[uu].x=14;
     51                 }
     52                 else kk[uu].x=a[i]-'0';
     53 
     54             }
     55           if((i-1)%3==0&&a[i]!='S')
     56             {
     57                 kk[uu].y=a[i]-'A';
     58                 uu++;
     59             }
     60             if((i-1)%3==0&&a[i]=='S')
     61             {
     62                  kk[uu].y=6;
     63                 uu++;
     64             }
     65 
     66         }
     67         uu=0;
     68         for(i=0; b[i]!=''; i++)
     69         {
     70             if(i%3==0)
     71             {
     72                 if(b[i]=='T')
     73                 {
     74                     qq[uu].x=10;
     75 
     76                 }
     77                 else  if(b[i]=='J')
     78                 {
     79                     qq[uu].x=11;
     80                 }
     81                 else  if(b[i]=='Q')
     82                 {
     83                     qq[uu].x=12;
     84                 }
     85                 else  if(b[i]=='K')
     86                 {
     87                     qq[uu].x=13;
     88                 }
     89                 else if(b[i]=='A')
     90                 {
     91                     qq[uu].x=14;
     92                 }
     93                 else qq[uu].x=b[i]-'0';
     94 
     95             }
     96             if((i-1)%3==0&&b[i]!='S')
     97             {
     98                 qq[uu].y=b[i]-'A';
     99                 uu++;
    100             }
    101             if((i-1)%3==0&&b[i]=='S')
    102             {
    103                  qq[uu].y=6;
    104                 uu++;
    105             }
    106         }
    107         qsort(qq,n,sizeof(ss),f);
    108         qsort(kk,n,sizeof(ss),f);
    109         int x,y;
    110         x=0;
    111         int s=0;
    112         for(j=0; j<n; j++)
    113         {
    114             for(p=x; p<n; p++)
    115             {
    116                 if(qq[p].x>kk[j].x)
    117                 {
    118                     x=p+1;
    119                     s++;
    120                     break;
    121                 }
    122                 else if(qq[p].x==kk[j].x)
    123                 {
    124                     if(qq[p].y>kk[j].y)
    125                     {
    126                         x=p+1;
    127                         s++;
    128                         break;
    129                     }
    130                 }
    131             }
    132         }
    133         printf("%d
    ",s);
    134 
    135     }
    136     return 0;
    137 
    138 }
    139 int f(const void*p,const void*q)
    140 {
    141     ss*w=(ss*)p;
    142     ss*ww=(ss*)q;
    143     if(w->x==ww->x)//如果前面的大小相同,就按后面的从小到大排
    144     {
    145         return w->y-ww->y;
    146     }
    147     else return w->x-ww->x;
    148 }
    油!油!you@
  • 相关阅读:
    vue 解决 打包完iE下空白
    多层josn数据 修改
    vue 初始化data中的数据
    图片查看器(缩放 拖动)
    js 懒加载
    css flex 兼容ios android--商品展示 添加购物车
    领域驱动架构(DDD)建模
    知乎复制文本
    Nlog配置文件
    未能加载文件或程序集“xxx”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/4948095.html
Copyright © 2011-2022 走看看