HDU/HDOJ 1113 Word Amalgamation(水题)

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1113

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Author: Tanky Woo
// Blog: www.WuTianQi.com
// Title: HDOJ 1113 Word Amalgamation
// About: 字符串
 
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
 
map<string, string> str;
string s, t;
 
int main()
{
	freopen("input.txt", "r", stdin);
	while(cin >> s && s != "XXXXXX")
	{
		t = s;
		sort(s.begin(), s.end());
		str[t] = s;
	}
	while(cin >> s && s != "XXXXXX")
	{
		bool flag = 0;
		t = s;
		sort(s.begin(), s.end());
		for(map<string, string>::iterator it=str.begin(); it!=str.end(); ++it)
			if(it->second == s)
			{
				cout << it->first << endl;
				flag = 1;
			}
		if(flag == 0)
			cout << "NOT A VALID WORD\n";
		cout << "******\n";
 
	}
}

HDOJ 1228 A + B

题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=1228


水题~~~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Accepted 1228 0MS 200K 641 B C++ 
#include <iostream>
#include <cmath>
using namespace std;
char map[][10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};
int search(char s[])
{
    for(int i=0; i<10; i++)
        if (strcmp(s,map[i])==0)
            return i;
}
int main()
{    
    char s[10];
    int a, b;
    while (1)
    {
        a=0;
        while (scanf("%s", s) && strcmp(s, "+") !=0 )
            a= a*10 + search(s);
        b=0;
        while (scanf("%s", s) && strcmp(s, "=") !=0)
            b= b*10 + search(s);
        if( a==0 && b==0)    break;
        printf("%d\n", a+b);
    }
    return 0;
}

HDOJ 2087 剪花布条


题目地址:
http://acm.hdu.edu.cn/showproblem.php?pid=2087


简单的字符串匹配问题。
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
// HDOJ 2087
// Accepted 2087 0MS 204K 480 B C++ Tanky Woo 
// Author: Tanky Woo
 
#include<iostream>
using namespace std;
char a[1001], b[1001];
 
int main()
{
	while(scanf("%s", a) && strcmp(a, "#") != 0)
	{
		scanf("%s", b);
		int cnt = 0;
		for(int i=0; i<strlen(a); ++i)
			if(a[i] == b[0])
			{
				int j;
				for(j=1; j<strlen(b); ++j)
					if(a[i+j] != b[j])
					{
						break;
					}
				if(j == strlen(b))
				{
					cnt++;
					i += j-1;
				}
			}
		printf("%d\n", cnt);
	}
}

HDOJ 1106 排序


题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1106


分析:
注意2点:
考虑最后一个是不是5,不是5要输出。
第一个是5要处理,比如55553
就输出3


代码写的很乱

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
#include <cstdlib>
#include <iostream>
#include <algorithm>
 
using namespace std;
char arr[1001];
int result[1001];
int main()
{
    while(scanf("%s", arr) != EOF)
    {
         int cnt = 0;
         int tmp = 0;
         int flag = 0;  // 表示第一个是5 
         for(int i=0; i<strlen(arr); ++i)
         {
              if(arr[i] == '5')
              {
                    if(i == 0)
                       flag = 1;
                    int k = i+1;
                    while(arr[k] == '5')
                        k++;
                     i=k-1;
                     if(flag == 1)
                     {
                         flag= 0;
                         continue;
                     }
                     result[cnt++] = tmp;
                    tmp = 0;
                    continue;
              }
              tmp *= 10;
              tmp += arr[i]-'0';
              if(i == strlen(arr)-1)
              {
                   result[cnt++] = tmp;
               }
         }
         sort(result, result+cnt);
         for(int i=0; i<cnt; ++i)
            if(i == 0)
                printf("%d",result[i]);
            else
                printf(" %d", result[i]);
         printf("\n");        
          memset(arr, 0, sizeof(arr));
    }
 
}

HDOJ 1200 To and Fro


 

题目连接:

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


不行了,我要抓狂了,题目说大小是200.我写成了100~~~~结果TLE的10次。我就知道肯定是数组开小了,但是我一直去改post,而没注意是pre数组。。。郁闷啊!!! [s:10]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
char pre[210], post[110][25];
int nColumn;
int main()
{
    while(scanf("%d", &nColumn) && nColumn)
    {
          getchar();
          scanf("%s", pre);
          int cnt = 0;
          for(int i=0; i<strlen(pre)/nColumn; ++i)
          {
               if(i%2==0)
                  for(int j=0; j<nColumn; ++j)
                      post[i][j] = pre[cnt++];
               else
                  for(int j=nColumn-1; j>=0; --j)
                       post[i][j] = pre[cnt++];
           }
           for(int i=0; i<nColumn; ++i)
              for(int j=0; j<strlen(pre)/nColumn; ++j)
                  printf("%c", post[j][i]);
           printf("\n");
      }
      return 0;
}