首页 > ACM题库 > HDU-杭电 > hdu 2564 词组缩写[解题报告]C++
2014
02-10

hdu 2564 词组缩写[解题报告]C++

词组缩写

问题描述 :

定义:一个词组中每个单词的首字母的大写组合称为该词组的缩写。
比如,C语言里常用的EOF就是end of file的缩写。

输入:

输入的第一行是一个整数T,表示一共有T组测试数据;
接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。

输出:

输入的第一行是一个整数T,表示一共有T组测试数据;
接下来有T行,每组测试数据占一行,每行有一个词组,每个词组由一个或多个单词组成;每组的单词个数不超过10个,每个单词有一个或多个大写或小写字母组成;
单词长度不超过10,由一个或多个空格分隔这些单词。

样例输入:

1
end of file 

样例输出:

EOF

#include<iostream>
#include<string>
using namespace std;
char b[10010];

void run(char b)
{
	if(b >= 'a' && b <= 'z')
		printf("%c", b - 32);
	else if(b >= 'A' && b <= 'Z')
		printf("%c", b);
}
int main()
{
	int n;
	scanf("%d", &n);
	getchar();
	while(n--)
	{
		gets(b);
		int i;
		if(b[0] != ' ')
		{
			run(b[0]);
		}
		for(i = 0; i < strlen(b)-1; i++)
		{
			if(b[i] == ' ' && b[i]+1 != ' ')
			{
				run(b[i+1]);
			}
		}
		printf("\n");

	}
	return 0;
}

解题转自:http://blog.csdn.net/asure__cpp/article/details/8577923


  1. 这道题目的核心一句话是:取还是不取。
    如果当前取,则index+1作为参数。如果当前不取,则任用index作为参数。

  2. #include <cstdio>
    #include <algorithm>

    struct LWPair{
    int l,w;
    };

    int main() {
    //freopen("input.txt","r",stdin);
    const int MAXSIZE=5000, MAXVAL=10000;
    LWPair sticks[MAXSIZE];
    int store[MAXSIZE];
    int ncase, nstick, length,width, tmp, time, i,j;
    if(scanf("%d",&ncase)!=1) return -1;
    while(ncase– && scanf("%d",&nstick)==1) {
    for(i=0;i<nstick;++i) scanf("%d%d",&sticks .l,&sticks .w);
    std::sort(sticks,sticks+nstick,[](const LWPair &lhs, const LWPair &rhs) { return lhs.l>rhs.l || lhs.l==rhs.l && lhs.w>rhs.w; });
    for(time=-1,i=0;i<nstick;++i) {
    tmp=sticks .w;
    for(j=time;j>=0 && store >=tmp;–j) ; // search from right to left
    if(j==time) { store[++time]=tmp; }
    else { store[j+1]=tmp; }
    }
    printf("%dn",time+1);
    }
    return 0;
    }

  3. Often We don’t set up on weblogs, but I would like to condition that this established up really forced me individually to do this! considerably outstanding publish