UVA 10905

这题一开始比较错了。两字符串比较应该是 ab和ba两字符串连接起来比较,谁在前面大就排前面。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

struct Num{
	char str[1000];
}num[60];

char tmp1[1000],tmp2[1000];

bool cmp(Num s,Num t){
	strcpy(tmp1,s.str);
	strcat(tmp1,t.str);
	strcpy(tmp2,t.str);
	strcat(tmp2,s.str);
	int len=strlen(tmp1);
	for(int i=0;i<len;i++)
	if(tmp1[i]<tmp2[i]) return false;
	else if(tmp1[i]>tmp2[i]) return true;
	if((int)strlen(s.str)<(int)strlen(t.str)) return true;
	return false;
}

int main(){
	int n;
	while(scanf("%d",&n),n){
		for(int i=0;i<n;i++)
		scanf("%s",num[i].str);
		sort(num,num+n,cmp);
		for(int i=0;i<n;i++)
		printf("%s",num[i].str);
		puts("");
	}
	return 0;
}

  

时间: 2024-12-05 04:59:49

UVA 10905的相关文章

UVA - 10905 - Children&#39;s Game (简单排序)

UVA - 10905 Children's Game Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description 4thIIUCInter-University Programming Contest, 2005 A Children's Game Input: standard input Output: standard output Problems

uva 10905 Children&#39;s Game(排序或者有点贪心)

今天配置vim没有成功,老是显示什么error,唉,其实之前成功过的,只不过是重装了dev,然后就变了,可能环境 变量的问题,但是我都改了的啊,以后再调吧... 这道题其实不是我想出来的看的题解,又看题解了...好吧,既然看了题解就得好好掌握才是.用到了我刚刚在 c++ primer里面学的string类,挺好用的,以后我准备写程序尽量用c++内容,多练练.. 又加深理解了qsort调用的cmp函数,它的两个参数其实都是要比较的元素的指针,比如这道题中的元素是string类 型,那么他们都是st

uva 10905 Children&#39;s Game

题意:给n个数字,将它们重新排序得到一个最大的数字, 分析:写一个比较函数每次调用,比较a+b>b+a; 1 #include<iostream> 2 #include<cstdio> 3 #include<string> 4 #include<algorithm> 5 using namespace std; 6 7 string s[60]; 8 int n; 9 10 bool cmp(string a,string b) 11 { 12 ret

uva 10905 Children&#39;s Game (用String的话,就是水题)

本以为string会耗时,就用数组,结果老是WA,没了耐心找错误,就换成string,秒过! #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <string> #include <stack> #include <cmath> #include <queue> #include <

贪心:Children&#39;s Game UVA - 10905

贪心策略:就是s1+s2>s2+s1这个贪心策略非常容易发现. #include<iostream> #include<algorithm> #include<string> using namespace std; const int maxn = 55; bool cmp(string s1, string s2){ return s1 + s2 > s2 + s1; } string a[maxn]; int n; int main(){ while

【字符串排序,技巧!】UVa 10905 - Children’s Game

There are lots of number games for children. These games are pretty easy to play but not so easy to make. We will discuss about an interesting game here. Each player will be given N positive integer. (S)He can make a big integer by appending those in

大白书

UVA 11292 (简单贪心) 题意: n条恶龙,m个勇士,用勇士来杀恶龙.一个勇士只能杀一个恶龙.而且勇士只能杀直径不超过自己能力值的恶龙.每个勇士需要支付能力值一样的金币.问杀掉所有恶龙需要的最少金币. 思路: 贪心,均从小到大排序.为每一条龙找一个恰好能杀他的骑士.简单贪心. UVA 11729 (经典贪心问题) 题意: n个任务,需要交代B分钟,执行J分钟,让你合理选择交代任务的次序,求得n个任务完成的最小总时长. 思路: 经典贪心,通过比较俩俩的关系,得到整个序列的贪心排序方法.这个

大白书第一章

UVA 11292 The Dragon of Loowater(简单贪心) 题意: n条恶龙,m个勇士,用勇士来杀恶龙.一个勇士只能杀一个恶龙.而且勇士只能杀直径不超过自己能力值的恶龙.每个勇士需要支付能力值一样的金币.问杀掉所有恶龙需要的最少金币. 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 20000 + 5; 4 int n, m; 5 int night[maxn], dragon[maxn

cumt2017春季——周练(二)

A.Bear and Big Brother 1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() 4 { 5 int x, y; 6 scanf("%d%d", &x, &y); 7 8 int ans = 0; 9 while(x <= y) 10 { 11 x *= 3; 12 y *= 2; 13 ans++; 14 } 15 printf("%d\n"