hdu 1800 简单字符串处理
2014-08-01 17:47
183 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1800
这道题题目如果想对了,那么就简单了,
简单说一下:(1)等级高的可以在同一木棒上教等级低的,最多只能教一个,当然也可以选择不教
(2)徒弟最多只能有一个师傅,但没有师傅也是可以的
(3)问最少需要多少个木棒
贪心思想,也就是只要找到出现次数最多的那个数就行,因为一个师傅最多只能教一个徒弟,而且一个徒弟最多只能有一个师傅,所以如果一个数出现次数大于1次,那么就要放到另一根木棒上去了,
关键是输入 的是一个字符串,最多30位,而且还有前导0 : 000324 和0324 和324 是一样的;
附上代码:
这道题题目如果想对了,那么就简单了,
简单说一下:(1)等级高的可以在同一木棒上教等级低的,最多只能教一个,当然也可以选择不教
(2)徒弟最多只能有一个师傅,但没有师傅也是可以的
(3)问最少需要多少个木棒
贪心思想,也就是只要找到出现次数最多的那个数就行,因为一个师傅最多只能教一个徒弟,而且一个徒弟最多只能有一个师傅,所以如果一个数出现次数大于1次,那么就要放到另一根木棒上去了,
关键是输入 的是一个字符串,最多30位,而且还有前导0 : 000324 和0324 和324 是一样的;
附上代码:
#include <iostream> #include <cstdio> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; char str[3300][50]; int cmp(const void *a,const void *b) { return strcmp((char *)a,(char *)b); } int main() { int n; while(cin>>n) { int i,j; for( i=0;i<n;i++) { scanf("%s",str[i]); for(j=0;str[i][j]=='0';j++); strcpy(str[i],str[i]+j); } qsort(str,n,sizeof(str[0]),cmp); int cnt=0,ans=0; for(int i=1;i<n;i++) { if(strcmp(str[i],str[i-1])==0) { cnt++; ans=max(ans,cnt); } else { cnt=0; } } printf("%d\n",ans+1); } return 0; }
相关文章推荐
- 简单字符串处理 hdu2532 Engine
- HDU 2895 字符串处理(看懂就简单)
- 简单字符串处理 hdu1062 Text Reverse
- hdu 3787 A+B(简单字符串处理)
- HDOJ/HDU 2567 寻梦(字符串简单处理)
- hdu 2265 Encoding The Diary (基础的字符串处理,巨简单)
- HDU 5585 Numbers(字符串的处理 简单题)——BestCoder Round #64(div.2)
- hdu 1062 Text Reverse 字符串处理。简单水题
- HDU-1228-A + B(简单字符串处理)
- HDU 1073 Online Judge (字符串处理,简单题)
- hdu 1020 简单的字符串处理
- HDU 2672 god is a girl (字符串处理,找规律,简单)
- hdu 5059 简单字符串处理
- HDU 1088 处理每个字符串比直接用getchar处理简单
- HDOJ/HDU 2567 寻梦(字符串简单处理)
- hdu 1004 Let the Balloon Rise ( 字符串简单处理)
- hdu 5059 简单字符串处理
- hdu 2734 简单地字符串处理
- hdu 1062 Text Reverse(字符串处理,简单模拟)
- HDU 2399 GPA(简单字符串的处理)