Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit a2e0dab

Browse files
update
1 parent 104ce66 commit a2e0dab

File tree

10 files changed

+536
-7
lines changed

10 files changed

+536
-7
lines changed

‎C程序设计进阶/week2/作业/1.cpp

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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+
}

‎C程序设计进阶/week2/作业/流感传染.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@
3535
#include <iostream>
3636
using namespace std;
3737

38-
void update(int n, char a[101][101]);
38+
void update(int n, char a[100][100]);
3939

4040
int 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+
}
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
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+
```
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
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+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /