File tree Expand file tree Collapse file tree 10 files changed +536
-7
lines changed
Expand file tree Collapse file tree 10 files changed +536
-7
lines changed Original file line number Diff line number Diff line change 1+ #include < iostream>
2+ #include < stdio.h>
3+ using namespace std ;
4+
5+ int main ()
6+ {
7+ char a[101 ][101 ];
8+ int n, m, sum = 0 ;
9+ cin >> n;
10+ for (int i = 0 ;i < n; i++)
11+ {
12+ for (int j = 0 ; j < n; j++)
13+ {
14+ cin >> a[i][j];
15+ }
16+ }
17+ cin >> m;
18+ for (int d = 1 ; d <= m; d++)
19+ {
20+ for (int i = 0 ; i < n; i++)
21+ {
22+ for (int j = 0 ; j < n;j++)
23+ {
24+ if (a[i][j] == ' !' )
25+ a[i][j] = ' @' ; // 将前一天标记的人感染
26+ }
27+ }
28+ for (int i = 0 ; i < n; i++)
29+ {
30+ for (int j = 0 ; j < n;j++)
31+ {
32+ // 将感染人周围的人标记
33+ if (a[i][j] == ' @' )
34+ {
35+ if (i + 1 <n && a[i + 1 ][j] == ' .' )
36+ a[i + 1 ][j]=' !' ;
37+ if (j - 1 >= 0 && a[i][j - 1 ] == ' .' )
38+ a[i][j - 1 ] = ' !' ;
39+ if (j + 1 < n && a[i][j + 1 ] == ' .' )
40+ a[i][j + 1 ]=' !' ;
41+ if (i - 1 >= 0 && a[i - 1 ][j] == ' .' )
42+ a[i - 1 ][j] = ' !' ;
43+ }
44+ }
45+ }
46+
47+ }
48+ for (int i = 0 ; i < n; i++)
49+ {
50+ for (int j = 0 ; j < n; j++)
51+ {
52+ if (a[i][j] == ' @' )
53+ sum++;
54+ }
55+ }
56+ cout << sum << endl;
57+ return 0 ;
58+ }
Original file line number Diff line number Diff line change 3535#include < iostream>
3636using namespace std ;
3737
38- void update (int n, char a[101 ][ 101 ]);
38+ void update (int n, char a[100 ][ 100 ]);
3939
4040int main ()
4141{
4242 int n = 0 ;
4343 cin >> n;
44- char a[101 ][ 101 ];
44+ char a[100 ][ 100 ];
4545 for (int i = 0 ; i < n; i++)
4646 {
4747 for (int j = 0 ; j < n; j++)
@@ -73,9 +73,9 @@ int main()
7373 return 0 ;
7474}
7575
76- void update (int n, char a[101 ][ 101 ])
76+ void update (int n, char a[100 ][ 100 ])
7777{
78- char newA[101 ][ 101 ];
78+ char newA[100 ][ 100 ];
7979 for (int i = 0 ; i < n; i++)
8080 {
8181 for (int j = 0 ; j < n; j++)
@@ -84,9 +84,9 @@ void update(int n, char a[101][101])
8484 if (a[i][j] == ' .' )
8585 {
8686 if ((a[i][j - 1 ] == ' @' && j - 1 >= 0 ) ||
87- (a[i][j + 1 ] == ' @' && j + 1 <= n) ||
87+ (a[i][j + 1 ] == ' @' && j + 1 < n) ||
8888 (a[i - 1 ][j] == ' @' && i - 1 >= 0 ) ||
89- (a[i + 1 ][j] == ' @' && i + 1 <= n))
89+ (a[i + 1 ][j] == ' @' && i + 1 < n))
9090 {
9191 newA[i][j] = ' @' ;
9292 }
@@ -101,4 +101,4 @@ void update(int n, char a[101][101])
101101 a[i][j] = newA[i][j];
102102 }
103103 }
104- }
104+ }
Original file line number Diff line number Diff line change 1+ ## 编程题#1:单词翻转
2+
3+ [ 来源: POJ] ( http://pkuic.openjudge.cn/hw07/1/ ) (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
4+
5+ ** 注意: 总时间限制: 1000ms 内存限制: 65536kB**
6+
7+ ### 描述
8+
9+ 输入一个句子(一行),将句子中的每一个单词翻转后输出。
10+
11+ ### 输入
12+
13+ 只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。所谓单词指的是** 所有** 不包含空格的连续的字符。
14+
15+ 这道题请用cin.getline输入一行后再逐个单词递归处理。
16+
17+ ### 输出
18+
19+ 翻转每一个单词后的字符串,** 单词之间的空格需与原文一致** 。
20+
21+ ### 样例输入
22+
23+ ```
24+ hello world.
25+ ```
26+
27+ ### 样例输出
28+
29+ ```
30+ olleh .dlrow
31+ ```
32+
33+ ## 编程题#2:角谷猜想
34+
35+ [ 来源: POJ ] ( http://pkuic.openjudge.cn/hw07/2 ) (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
36+
37+ ** 注意: 总时间限制: 1000ms 内存限制: 65536kB**
38+
39+ ### 描述
40+
41+ 所谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为5,计算过程分别为16、8、4、2、1。
42+
43+ 程序要求输入一个整数,将经过处理得到1的过程输出来。
44+
45+ ### 输入
46+
47+ 一个正整数
48+
49+ ### 输出
50+
51+ 从输入整数到1的步骤,每一步为一行,每一部中描述计算过程,假定输入为7,则输出为:
52+
53+ 7* 3+1=22
54+
55+ 22/2=11
56+
57+ 11* 3+1=34
58+
59+ 34/2=17
60+
61+ 17* 3+1=52
62+
63+ 52/2=26
64+
65+ 26/2=13
66+
67+ 13* 3+1=40
68+
69+ 40/2=20
70+
71+ 20/2=10
72+
73+ 10/2=5
74+
75+ 5* 3+1=16
76+
77+ 16/2=8
78+
79+ 8/2=4
80+
81+ 4/2=2
82+
83+ 2/2=1
84+
85+ 最后一行输出"End",如果输入为1,直接输出"End"
86+
87+ ### 样例输入
88+
89+ ```
90+ 1
91+
92+
93+
94+
95+
96+
97+
98+
99+ 5
100+
101+
102+
103+
104+
105+
106+ ```
107+
108+ ### 样例输出
109+
110+ ```
111+ 5*3+1=16
112+ 16/2=8
113+ 8/2=4
114+ 4/2=2
115+ 2/2=1
116+ End
117+ ```
118+
119+
120+
121+ ## 编程题#3:排队游戏
122+
123+ [ 来源: POJ] ( http://pkuic.openjudge.cn/hw07/3 ) (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
124+
125+ ** 注意: 总时间限制: 1000ms 内存限制: 65536kB**
126+
127+ ### 描述
128+
129+ 在幼儿园中,老师安排小朋友做一个排队的游戏。首先老师精心的把数目相同的小男孩和小女孩编排在一个队列中,每个小孩按其在队列中的位置发给一个编号(编 号从0开始)。然后老师告诉小朋友们,站在前边的小男孩可以和他后边相邻的小女孩手拉手离开队列,剩余的小朋友重新站拢,再按前后相邻的小男孩小女孩手拉 手离开队列游戏,如此往复。由于教师精心的安排,恰好可以保证每两个小朋友都能手拉手离开队列,并且最后离开的两个小朋友是编号最小的和最大的两个小朋 友。(注:只有小男孩在前,小女孩在后,且他们两之间没有其他的小朋友,他们才能手拉手离开队列)。请根据老师的排队,按小女孩编号从小到大的顺序,给出 所有手拉手离开队列的小男孩和小女孩的编号对。
130+
131+ ### 输入
132+
133+ 用一个字符串代表小朋友队列。字符串中只会出现两个字符(样例输入里用的是 括号但实际数据则不一定),分别代表小男孩和小女孩,首先出现的字符代表小男孩,另一个字符代表小女孩。小孩总数不超过100
134+
135+ ### 输出
136+
137+ 按小女孩编号顺序,顺序输出手拉手离开队列的小男孩和小女孩的编号对,每行一对编号,编号之间用一个空格分隔。
138+
139+ ### 样例输入
140+
141+ ```
142+ ((()(())())(()))
143+ ```
144+
145+ ### 样例输出
146+
147+ ```
148+ 2 3
149+ 5 6
150+ 4 7
151+ 8 9
152+ 1 10
153+ 12 13
154+ 11 14
155+ 0 15
156+ ```
Original file line number Diff line number Diff line change 1+ /*
2+ 编程题#1:单词翻转
3+
4+ 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)
5+
6+ 注意: 总时间限制: 1000ms 内存限制: 65536kB
7+
8+ 描述
9+
10+ 输入一个句子(一行),将句子中的每一个单词翻转后输出。
11+
12+ 输入
13+
14+ 只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。所谓单词指的是所有不包含空格的连续的字符。
15+
16+ 这道题请用cin.getline输入一行后再逐个单词递归处理。
17+
18+ 输出
19+
20+ 翻转每一个单词后的字符串,单词之间的空格需与原文一致。
21+
22+ 样例输入
23+ 1
24+ hello world.
25+
26+ 样例输出
27+ 1
28+ olleh .dlrow
29+
30+ */
31+
32+ #include < iostream>
33+ using namespace std ;
34+
35+ void revertWord (char str[], int start, int end);
36+ void revert (char str[], int start);
37+
38+ int main ()
39+ {
40+ char str[500 ];
41+ cin.getline (str, 500 );
42+ revert (str, 0 );
43+ cout << str << endl;
44+ return 0 ;
45+
46+ }
47+
48+ void revertWord (char str[], int start, int end)
49+ {
50+ for (int i = start, j = end; i < j; i++, j--)
51+ {
52+ char tmp = str[i];
53+ str[i] = str[j];
54+ str[j] = tmp;
55+ }
56+ }
57+
58+ void revert (char str[], int start)
59+ {
60+ while (str[start] == ' ' )
61+ {
62+ start++;
63+ }
64+ if (str[start] == ' \0 ' )
65+ {
66+ return ;
67+ }
68+ int end = start;
69+ while (str[end] != ' ' && str[end] != ' \0 ' )
70+ {
71+ end++;
72+ }
73+ revertWord (str, start, end - 1 );
74+ revert (str, end);
75+ }
You can’t perform that action at this time.
0 commit comments