CrossChao's Code

I'm thinking

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  1 随笔 :: 3 文章 :: 1 评论 :: 0 Trackbacks

 

  1#include <iostream>
  2using namespace std;
  3
  4struct InfoList//输入信息保存链表(猪圈数,余出的猪数)
  5{
  6    int numOfJuan;//猪圈数
  7    int numOfOvers;//多出的猪数
  8    InfoList *next;
  9    InfoList *before;
 10}
;
 11
 12class Pig
 13{
 14public:
 15    Pig();
 16    int makeInfoList( int juans, int overs );
 17    void Traverse();
 18    bool Compare( int numOfPigs, InfoList *p );
 19    int Run();
 20private:
 21    InfoList *phead;
 22}
;
 23
 24Pig::Pig()
 25{
 26    this->phead = NULL;
 27}

 28
 29int Pig::makeInfoList( int juans, int overs )
 30{
 31    ifthis->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
 55void 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
 65bool 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
 81int 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        forint i = pTmp->numOfJuan, j = pTmp->numOfOvers, k = 1; ; ++ k )
 90        {
 91            //cout << "Debug:传递参数Compare " << i * k + j << pTmp << endl;
 92            ifthis->Compare( i * k + j, pTmp ) )
 93                return i * k + j;
 94        }

 95    }

 96    else
 97        return false;
 98}

 99
100int 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)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航:   博客园   博客园最新博文   博问   管理