CrossChao's Code
I'm thinking
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
1 随笔 :: 3 文章 :: 1 评论 :: 0 Trackbacks
<
2026年6月
>
日
一
二
三
四
五
六
31
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
1
2
3
4
5
6
7
8
9
10
11
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔档案
2009年7月 (1)
文章档案
2009年8月 (2)
2009年7月 (1)
搜索
最新随笔
1. 埃及分数 - 完成中········
最新评论
1. re: 剪刀石头布
这代码好天真,只要生成了不是3的倍数的环,裁判就存在。怎么会是那么简单的判断?
--ylc
猪的安家
1
#include
<
iostream
>
2
using
namespace
std;
3
4
struct
InfoList
//
输入信息保存链表(猪圈数,余出的猪数)
5
{
6
int
numOfJuan;
//
猪圈数
7
int
numOfOvers;
//
多出的猪数
8
InfoList
*
next;
9
InfoList
*
before;
10
}
;
11
12
class
Pig
13
{
14
public
:
15
Pig();
16
int
makeInfoList(
int
juans,
int
overs );
17
void
Traverse();
18
bool
Compare(
int
numOfPigs, InfoList
*
p );
19
int
Run();
20
private
:
21
InfoList
*
phead;
22
}
;
23
24
Pig::Pig()
25
{
26
this
->
phead
=
NULL;
27
}
28
29
int
Pig::makeInfoList(
int
juans,
int
overs )
30
{
31
if
(
this
->
phead
==
NULL )
32
{
33
if
(
!
(
this
->
phead
=
new
InfoList ) )
34
return
false
;
35
this
->
phead
->
next
=
NULL;
36
this
->
phead
->
numOfJuan
=
juans;
37
this
->
phead
->
numOfOvers
=
overs;
38
this
->
phead
->
before
=
NULL;
39
}
40
else
41
{
42
InfoList
*
pTmp
=
this
->
phead;
43
while
( pTmp
->
next )
44
pTmp
=
pTmp
->
next;
45
if
(
!
( pTmp
->
next
=
new
InfoList ) )
46
return
false
;
47
pTmp
->
next
->
next
=
NULL;
48
pTmp
->
next
->
numOfJuan
=
juans;
49
pTmp
->
next
->
numOfOvers
=
overs;
50
pTmp
->
next
->
before
=
pTmp;
51
}
52
return
true
;
53
}
54
55
void
Pig::Traverse()
56
{
57
InfoList
*
pTmp
=
this
->
phead;
58
while
( pTmp
!=
NULL )
59
{
60
cout
<<
"
(
"
<<
pTmp
->
numOfJuan
<<
"
,
"
<<
pTmp
->
numOfOvers
<<
"
)
"
<<
endl;
61
pTmp
=
pTmp
->
next;
62
}
63
}
64
65
bool
Pig::Compare(
int
numOfPigs, InfoList
*
p )
66
{
67
p
=
p
->
before;
68
69
if
( numOfPigs
%
p
->
numOfJuan
==
p
->
numOfOvers )
70
{
71
if
( p
->
before )
72
{
73
this
->
Compare( numOfPigs, p );
74
}
75
}
76
else
77
return
false
;
78
return
true
;
79
}
80
81
int
Pig::Run()
82
{
83
InfoList
*
pTmp
=
this
->
phead;
84
if
( pTmp )
85
{
86
while
( pTmp
->
next )
87
pTmp
=
pTmp
->
next;
88
//
cout << "Debug:" << pTmp->numOfJuan << endl; system( "pause" );
89
for
(
int
i
=
pTmp
->
numOfJuan, j
=
pTmp
->
numOfOvers, k
=
1
; ;
++
k )
90
{
91
//
cout << "Debug:传递参数Compare " << i * k + j << pTmp << endl;
92
if
(
this
->
Compare( i
*
k
+
j, pTmp ) )
93
return
i
*
k
+
j;
94
}
95
}
96
else
97
return
false
;
98
}
99
100
int
main()
101
{
102
Pig pigone;
103
//
pigone.makeInfoList( 5, 2 );
104
//
pigone.makeInfoList( 3, 2 );
105
//
pigone.makeInfoList( 8, 1 );
106
//
pigone.Traverse();
107
//
cout << pigone.Run();
108
cout
<<
"
请输入建圈次数
"
<<
endl;
109
int
num, numofjuan, numofover;
110
cin
>>
num;
111
cout
<<
"
一次输入每次猪圈数和多出来的猪的头数
"
<<
endl;
112
for
( ; num
>
0
;
--
num )
113
{
114
cin
>>
numofjuan
>>
numofover;
115
pigone.makeInfoList( numofjuan, numofover );
116
}
117
cout
<<
"
一共有
"
<<
pigone.Run()
<<
"
头猪!
"
<<
endl;
118
return
0
;
119
}
posted on 2009-08-28 09:29
CrossChao
阅读(185)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
博客园最新博文
博问
管理
Powered by:
C++博客
Copyright © CrossChao