@TOC

哈希的应用于排版

Hash的应用

  1. 统计某个成绩的学生的人数;

  2. 给定n个整数,输出前m大的数

    使用桶排序的思路来做。

排版题

1. 梯形排版

输入一个数h,输出一个上底为h,高为h的梯形。
如:
3
    ***
  *****
*******
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;

int main() {
int n;
int space = 0;
int out = 0;
while(scanf("%d", &n) != EOF) {
for(int i = 1; i <= n; i++) {
space = (n - i) * 2;
out = n + (i - 1) * 2;
while(space--)
cout << " ";
while(out--)
cout << "*";
cout << endl;
}
}
return 0;
}

2. 叠箩筐

题目描述:
  把一个个大小差一圈的筐叠上去,使得从上往下看时,边筐花色交错。这个工作现在要让计算机来完成,得看你的了。
输入:
  输入是一个个的三元组,分别是,外筐尺寸n(n为满足0<n<80的奇整数),中心花色字符,外筐花色字符,后二者都为ASCII可见字符;
输出:
  输出叠在一起的筐图案,中心花色与外筐花色字符从内层起交错相叠,多筐相叠时,最外筐的角总是被打磨掉。叠筐与叠筐之间应有一行间隔。
样例输入:
    11 B A
    5 @ W
样例输出:
    AAAAAAAAA
    ABBBBBBBBBA
    ABAAAAAAABA
    ABABBBBBABA
    ABABAAABABA
    ABABABABABA
    ABABAAABABA
    ABABBBBBABA
    ABAAAAAAABA
    ABBBBBBBBBA 
     AAAAAAAAA 

     @@@
    @WWW@
    @W@W@
    @WWW@ 
     @@@
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
53
54
55
56
57
58
59
60
61
62
63
#include <iostream>
using namespace std;

int main() {
int n;
char in;
char out;
char temp;
int head = 0;
char arr[80][80];
while(scanf("%d %c %c", &n, &in, &out) == 3) {
arr[0][0] = arr[0][n - 1] = ' ';
arr[n - 1][0] = arr[n - 1][n - 1] = ' ';

arr[n / 2][n / 2] = in;
bool bin = false;
bool bout = true;
for (int i = n / 2 - 1; i > 0; i--) {
if (bout && !bin) {
temp = out;
bout = false;
bin = true;
} else if (bin && !bout){
temp = in;
bin = false;
bout = true;
}
for (int j = i; j < n - i; j++) {
arr[i][j] = temp;
arr[n - i - 1][j] = temp;
}

for (int k = i + 1; k < n - i - 1; k++) {
arr[k][i] = temp;
arr[k][n - i - 1] = temp;
}

}

if (bin)
temp = in;
else if (bout)
temp = out;

head = n - 2;
for (int head = 1; head < n - 1; head++) {
arr[0][head] = temp;
arr[n - 1][head] = temp;
arr[head][0] = temp;
arr[head][n - 1] = temp;
}


for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << arr[i][j];
}
cout << endl;
}

}
return 0;
}