Skip to content

Commit cc63fea

Browse files
author
ZhiGuoLi
authored
Merge pull request #24 from zguolee/LiZhiguo
更新第5章
2 parents d297605 + 046b639 commit cc63fea

File tree

5 files changed

+78
-87
lines changed

5 files changed

+78
-87
lines changed

第5章数据结构一/5.1向量/5-1完数与盈数.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
#include<iostream>
22
#include<vector>
3-
43
using namespace std;
5-
64
int getSum(int x) {
75
int sum=0;
86
for(int i=1; i<x; i++) {
@@ -17,18 +15,18 @@ int main() {
1715
vector<int> num_E;
1816
vector<int> num_G;
1917
for(int i=2; i<=60; i++) {
20-
if(getSum(i)==i) {
18+
if(i==getSum(i)) {
2119
num_E.push_back(i);
22-
} else if(getSum(i)>i) {
20+
} else if(i<getSum(i)) {
2321
num_G.push_back(i);
2422
}
2523
}
2624
printf("E:");
27-
for(int i=0;i<num_E.size();i++){
25+
for(int i=0; i<num_E.size(); i++) {
2826
printf(" %d",num_E[i]);
2927
}
3028
printf("\nG:");
31-
for(int i=0;i<num_G.size();i++){
29+
for(int i=0; i<num_G.size(); i++) {
3230
printf(" %d",num_G[i]);
3331
}
3432
return 0;
Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,35 @@
11
#include<iostream>
22
#include<queue>
3-
43
using namespace std;
54

65
int main() {
7-
//n,n个小孩;p开始报数;m间隔
86
int n,p,m;
9-
while(scanf("%d%d%d",&n,&p,&m)!=EOF) {
7+
while(scanf("%d%d%d",&n,&p,&m)) {
108
if(n==0&&p==0&&m==0) {
119
break;
1210
}
13-
queue<int> children;
14-
//初始化队列
11+
queue<int> myQueue;
1512
for(int i=0; i<n; i++) {
16-
children.push(i+1);
13+
myQueue.push(i+1);
1714
}
18-
//使序号为p的小孩到队首
1915
for(int i=1; i<p; i++) {
20-
children.push(children.front());
21-
children.pop();
16+
myQueue.push(myQueue.front());
17+
myQueue.pop();
2218
}
23-
while(!children.empty()) {
19+
while(!myQueue.empty()) {
2420
for(int i=1; i<m; i++) {
25-
children.push(children.front());
26-
children.pop();
21+
myQueue.push(myQueue.front());
22+
myQueue.pop();
2723
}
28-
if(children.size()==1) {
29-
printf("%d\n",children.front());
24+
if(myQueue.size()==1) {
25+
printf("%d",myQueue.front());
26+
myQueue.pop();
3027
} else {
31-
printf("%d,",children.front());
28+
printf("%d,",myQueue.front());
29+
myQueue.pop();
3230
}
33-
children.pop();
3431
}
32+
printf("\n");
3533
}
3634
return 0;
3735
}

第5章数据结构一/5.2队列/5-3猫狗收容所.cpp

Lines changed: 42 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,58 @@
11
#include<iostream>
22
#include<queue>
3-
4-
/*
5-
6
6-
1 1
7-
1 -1
8-
2 0
9-
1 2
10-
2 -1
11-
2 1
12-
*/
13-
143
using namespace std;
15-
164
struct Animal {
17-
int index;
18-
int id;
19-
Animal(int a,int b):index(a),id(b) {}
5+
int order,id;
6+
Animal(int o,int i):order(o),id(i) {}
207
};
218
int main() {
22-
int n,m,t,order=0;//order表示索引
23-
scanf("%d",&n);
24-
queue<Animal> dog;
25-
queue<Animal> cat;
26-
for(int i=0; i<n; i++) {
27-
scanf("%d%d",&m,&t);
28-
if(m==1) {
29-
if(t>0) {
30-
dog.push(Animal(order++,t));
31-
} else if(t<0) {
32-
cat.push(Animal(order++,t));
33-
}
34-
} else {
35-
if(t==0&&!dog.empty()&&!cat.empty()) {
36-
//收养最早的动物
37-
if(dog.front().index<cat.front().index) {
38-
//如果狗的索引更小
9+
int n;
10+
while(scanf("%d",&n)!=EOF) {
11+
queue<Animal> dog,cat;
12+
int order=0,m,t;
13+
for(int i=0; i<n; i++) {
14+
scanf("%d%d",&m,&t);
15+
if(m==1) {
16+
if(t>0) {//狗进入收容所
17+
dog.push(Animal(order++,t));
18+
} else {
19+
cat.push(Animal(order++,t));
20+
}
21+
} else {
22+
bool isDog=true;
23+
if(t==0) { //收养动物中最早进入
24+
if(dog.empty()&&cat.empty()) {
25+
continue;
26+
} else if(cat.empty()) {
27+
//狗中找
28+
isDog=true;
29+
} else if(dog.empty()) {
30+
//猫中找
31+
isDog=false;
32+
} else {
33+
if(dog.front().order>cat.front().order) {
34+
//收养猫
35+
isDog=false;
36+
}
37+
}
38+
} else if(t>0) { //收养狗
39+
if(dog.empty()) {
40+
continue;
41+
}
42+
} else {
43+
if(cat.empty()) {
44+
continue;
45+
}
46+
isDog=false;
47+
}
48+
if(isDog) {
3949
printf("%d ",dog.front().id);
4050
dog.pop();
4151
} else {
4252
printf("%d ",cat.front().id);
4353
cat.pop();
4454
}
45-
} else if(t==0&&dog.empty()&&!cat.empty()) {
46-
//收养最早的动物,狗为空
47-
printf("%d ",cat.front().id);
48-
cat.pop();
49-
} else if(t==0&&!dog.empty()&&cat.empty()) {
50-
//收养最早的动物,猫为空
51-
printf("%d ",dog.front().id);
52-
dog.pop();
53-
} else if(t==1&&!dog.empty()) {
54-
//收养狗
55-
printf("%d ",dog.front().id);
56-
dog.pop();
57-
} else if(t==-1&&!cat.empty()) {
58-
//收养猫
59-
printf("%d ",cat.front().id);
60-
cat.pop();
6155
}
62-
printf("\n");
6356
}
6457
}
6558
return 0;

第5章数据结构一/5.3栈/5-4Zero-complexity Transposition.cpp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@
33

44
using namespace std;
55

6-
int main(){
7-
int n;
8-
stack<long long> num;
9-
long long temp;
10-
while(scanf("%d",&n)!=EOF){
11-
for(int i=0;i<n;i++){
12-
cin>>temp;
13-
num.push(temp);
14-
}
15-
for(int i=0;i<n;i++){
16-
cout<<num.top()<<" ";
17-
num.pop();
18-
}
19-
}
20-
return 0;
6+
int main() {
7+
int n;
8+
stack<long long> num;
9+
long long temp;
10+
while(scanf("%d",&n)!=EOF) {
11+
for(int i=0; i<n; i++) {
12+
cin>>temp;
13+
num.push(temp);
14+
}
15+
for(int i=0; i<n; i++) {
16+
cout<<num.top()<<" ";
17+
num.pop();
18+
}
19+
}
20+
return 0;
2121
}

第5章数据结构一/5.3栈/5-5括号匹配问题.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ int main() {
1919
}
2020
} else if(str[i]=='(') {
2121
brackets.push(i);
22+
} else {
23+
continue;
2224
}
2325
}
24-
while(!brackets.empty()){
26+
while(!brackets.empty()) {
2527
answer[brackets.top()]='$';
2628
brackets.pop();
2729
}

0 commit comments

Comments
 (0)