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]!='\0'; 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]!='\0'; 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\n",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 }
hdu 1528-Card Game Cheater(贪心算法)的更多相关文章
- hdu 1528 Card Game Cheater (二分匹配)
Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- hdu 1528 Card Game Cheater ( 二分图匹配 )
题目:点击打开链接 题意:两个人纸牌游戏,牌大的人得分.牌大:2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 < T < J < ...
- hdu 1789 Doing HomeWork Again (贪心算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1789 /*Doing Homework again Time Limit: 1000/1000 MS ...
- HDU 1009 FatMouse' Trade (贪心算法)
题意:就是老鼠要用猫粮换粮食,第i个房间一些东西,要用东西去换,可以不全换.问给定的猫粮最多能换多少粮食. 析:贪心算法.我们先算出来每个房间物品的平均价格是多少,肯定越低越好,并且如果能全换就全换, ...
- HDOJ 1528 Card Game Cheater
版权声明:来自: 码代码的猿猿的AC之路 http://blog.csdn.net/ck_boss https://blog.csdn.net/u012797220/article/details/3 ...
- (简单匹配)Card Game Cheater -- hdu --1528
http://acm.hdu.edu.cn/showproblem.php?pid=1528 Card Game Cheater Time Limit: 2000/1000 MS (Java/Othe ...
- Card Game Cheater(贪心+二分匹配)
Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- 『嗨威说』算法设计与分析 - 贪心算法思想小结(HDU 2088 Box of Bricks)
本文索引目录: 一.贪心算法的基本思想以及个人理解 二.汽车加油问题的贪心选择性质 三.一道贪心算法题点拨升华贪心思想 四.结对编程情况 一.贪心算法的基本思想以及个人理解: 1.1 基本概念: 首先 ...
- HDU 1528 贪心模拟/二分图
Card Game Cheater Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
随机推荐
- Oracle-常用表的查询、增加列、删除列、修改列值功能【增删改查】
#查看表 select * from `竟企区域数据分析` #在表第一列新增名为"年月"的列alter table `竟企区域数据分析` add column 年月 varchar ...
- 通过yum安装 memcache
. 通过yum安装 复制代码代码如下: yum -y install memcached#安装完成后执行:memcached -h#出现memcached帮助信息说明安装成功 2. 加入启动服务 复制 ...
- 什么是DDL,DML,DCL
转载自 https://www.2cto.com/database/201610/555167.html DML.DDL.DCL区别 . 总体解释: DML(data manipulation la ...
- .NET Core如何配置TLS Cipher(套件)?
前言 前不久我发表了一篇关于TLS协议配置被我钻了空子,经过第三方合作伙伴验证,针对此TLS协议存在不安全套件,急催速速解决,那么我们本篇开始继续整活!第三方合作伙伴对平台安全严苛要求,我们已连续发版 ...
- 学习java 7.27
学习内容: 创建树 Swing 使用JTree对象来代表一棵树,JTree树中结点可以使用TreePath来标识,该对象封装了当前结点及其所有的父结点. 当一个结点具有子结点时,该结点有两种状态: 展 ...
- pow()是如何实现的?
如1.5 ** 2.5,如何计算?似乎是这样的: 1. cmath calculates pow(a,b) by performing exp(b * log(a)). stackoverflow 2 ...
- Spark产生数据倾斜的原因以及解决办法
Spark数据倾斜 产生原因 首先RDD的逻辑其实时表示一个对象集合.在物理执行期间,RDD会被分为一系列的分区,每个分区都是整个数据集的子集.当spark调度并运行任务的时候,Spark会为每一个分 ...
- oracle中的数组
Oracle中的数组分为固定数组和可变数组. 一.固定数组固定数组:在定义的时候预定义了数组的大小,在初始化数组时如果超出这个大小,会提示ORA-06532:超出小标超出限制!语法: T ...
- 特定场景下的PLC 远程控制和数据读取
最近有位博友提出了一种应用场景,根据工作中实际遇到的类似的产品应用场景,记录下自己的解决方案. 场景: 需要在云端控制和采集各个站点的PLC数据.各个站点是分散的,每个站点有公网访问能力,但是分散站点 ...
- JavaWeb的三大作用域
三大作用域描述 名称 类型 描述 request HttpServletRequest 将数据放在请求作用域中,在一次请求中实现数据的共享,比如请求转发 session HttpSession 将数据 ...