hdu 1800 简单字符串处理

来源:互联网 发布:电通安吉斯网络 编辑:程序博客网 时间:2024/04/26 05:34

http://acm.hdu.edu.cn/showproblem.php?pid=1800

这道题题目如果想对了,那么就简单了,

简单说一下:(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;}


0 0