您的位置:首页 > 其它

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 是一样的;

附上代码:

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: