uva 10905 - Children's Game(排序中的贪心)
来源:互联网 发布:怎么恢复手机里的数据 编辑:程序博客网 时间:2024/04/30 00:06
题目链接:click here~
刚看完一些贪心的题目,看此题就特别想用贪心。。谁知走到死胡同里了(虽然此题的解法就是排序的贪心)。。我先根据字典序从大到小给数字排序,然后再各种分情况,比如945 94,应该选94 在前面因为前者最后一个是5比9小,类似这种,WA了3回然后上uvatoolkit测试数据,测试了1000组数据错了10组,仔细研究了下,顿时让我心碎了,这个思路根本不对头。。虽然能通过很多数据。。
此题思路是:想取得最大的数字,首先肯定前面的要大,全部的最大等同于与局部最大的排在前面,就是说答案里第一个数字和第二个数字的序列一定比任何一个2个数字的序列都要大,除了第一个数字,第二个数字与第三个数字的序列比任何一个2个数字的序列都要大,总结下来就是把qsort的cmp写成如果数字1加数字2大于数字2加数字1,那就把数字1排在数字2前面,这样下去就一定能得到我刚才说的。很有技巧的一道题目
AC代码:
#include<cstdio>#include<ctype.h>#include<algorithm>#include<iostream>#include<cstring>#include<vector>#include<stack>#include<cmath>#include<queue>#include<set>#include<ctime>using namespace std;#define NMAX 500005#define ll long longstruct status{ char num[1000]; int len;} a[51];int cmp(const void *a, const void *b){ status *temp1 = (status*)a; status *temp2 = (status*)b; char t1[1000],t2[1000]; strcpy(t1,temp1->num); strcpy(t2,temp2->num); int k,w; for(k = temp1->len,w=0; k < temp1->len+temp2->len; k++,w++) t1[k] = temp2->num[w]; t1[k] = '\0'; for(k = temp2->len,w=0; k < temp1->len+temp2->len; k++,w++) t2[k] = temp1->num[w]; t2[k] = '\0'; if(strcmp(t1,t2) > 0) return -1; else return 1;}int main(){// freopen("input.txt","r",stdin);// freopen("o1.txt","w",stdout); int i,n; while(~scanf("%d",&n) && n) { for(i = 0; i < n; i++) { scanf("%s",a[i].num); a[i].len = strlen(a[i].num); }// for(i = 0; i < n; i++)// printf("%s ",a[i].num);// cout<<endl; qsort(a,n,sizeof(a[i]),cmp); for(i = 0; i < n; i++) printf("%s",a[i].num); printf("\n"); } return 0;}
0 0
- uva 10905 - Children's Game(排序中的贪心)
- uva - 10905 - Children's Game(贪心,qsort排序)
- uva 10905 Children's Game(排序或者有点贪心)
- UVa 10905 Children's Game 贪心
- UVA 10905 Children's Game(贪心 + 水题)
- UVa 10905 Children's Game / 贪心
- UVa 10905 Children's Game ( 贪心 )
- uva-10905Children's Game(贪心)
- UVA - 10905 Children's Game(贪心)
- UVA 10905 Children's Game (贪心)
- UVA 10905 Children's Game [贪心]
- UVA 10905 Children's Game(贪心)
- UVa 10905 Children's Game (贪心)
- UVA Children’s Game(贪心)
- uva 10905 Children's Game (排序)
- UVA 10905 Children's Game 孩子的游戏 贪心
- UVa 10905 - Children's Game
- UVa 10905 - Children's Game
- VC下wav格式音频文件I/O操作:文件头+数据段
- memcached完全剖析--1. memcached的基础 和 memcached全面剖析--PDF总结篇
- Hellow Acmer!
- 黑马程序员(一)-------进制、内存、数组、指针、字符串
- C++ 11 新特性之 lambda表达式
- uva 10905 - Children's Game(排序中的贪心)
- android SDK Manager 更新慢解决办法
- 2014年3I工作室正式成员名单
- Android-----WebView使用
- 网上的虚拟孝心,你妈妈知道吗?
- eclipse显示行号
- GDCPC-2014 总结
- 幻方(UVa 10087 - The Tajmahal of ++Y2k)
- oracle分页排序出现重复数据