免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: loveguohuasai
打印 上一主题 下一主题

[算法] 母牛数量算法 [复制链接]

论坛徽章:
0
151 [报告]
发表于 2005-04-30 11:26 |只看该作者

母牛数量算法

int number(int year)
{
  int n=year;
  int x=0;
  while( year>;0)
  {
    int m = year-4;
    if(m>;0)
     x += m;
     year--;
  }
  x +=n;
return x;
}

论坛徽章:
0
152 [报告]
发表于 2005-04-30 17:26 |只看该作者

母牛数量算法

#include<iostream.h>;
int Cow(int n){
        int temp=0;
        int count=1;
        temp=n/4+1;
        if(n==1)return count;
        for(int i=1;i<temp;i++){
                count=2*count;
        }
        return count;
}
void main(){
        int year;
        cout<<"你想查找哪一年牛的数量?"<<endl;
        cin>;>;year;
        cout<<endl;
        cout<<"第"<<year<<"年牛的数量是:"<<Cow(year)<<endl;
}
我用c++写的,不知对不对。望大家赐教!
算法我想就是2的一个次幂!

论坛徽章:
0
153 [报告]
发表于 2005-04-30 17:28 |只看该作者

母牛数量算法

哎呀!错了!还没考虑原来的牛呢!

论坛徽章:
0
154 [报告]
发表于 2005-06-10 16:07 |只看该作者

母牛数量算法

#include <stdio.h>;

int main()
{
  int n1 = 0;
  int n2 = 0;
  int n3 = 0;
  int n4 = 1;
  int zn;

  //从第四年开始
  for (int i = 0; i < (10 - 4); i++)
  {
    if (n1 == 0) n1 = n4;
    else
    {
      n4 += n3;        //三年的加到4年上
      n3 = n2;        //两年的变成3年的
      n2 = n1;        //一年的变成2年的
      n1 = n4;        //四年的生出1年的
    }
    zn = n1 + n2 + n3 + n4;
  }
  printf("%d", zn);
  return 0;
}

论坛徽章:
0
155 [报告]
发表于 2005-06-10 20:24 |只看该作者

母牛数量算法

int compute(int year)
{
        int count = 0,i;

        if ( year < 4)
                return 1;
        for ( i = year-3 ; i >;0 ; --i)
                count += compute(i);

        return count + 1;
               
}

论坛徽章:
0
156 [报告]
发表于 2005-06-10 20:49 |只看该作者

母牛数量算法

这些牛都是不死的么

论坛徽章:
0
157 [报告]
发表于 2005-06-10 21:03 |只看该作者

母牛数量算法

非递归的旅程正不正确,首先看你得到的值是不是溢出(如果就用内建的变量类型的话)........不溢出是不可能的

论坛徽章:
0
158 [报告]
发表于 2005-12-10 17:29 |只看该作者
终究是理论啊,好像母牛不会死?10000年之后也不会?

论坛徽章:
0
159 [报告]
发表于 2005-12-17 03:50 |只看该作者

回复 9楼 aero 的帖子

其实用递归也可以很快
改了一下aero的程序得到的,瞬间就能出结果了:

#include <stdio.h>

double inc_data[101];
bool not_calced[101];

double inc(int);

double fun (int n){                        /*计算第n年有多少牛的函数。*/
    if ( n==1 ) return 1;
    return inc(n)+fun(n-1);
}

double inc (int n){                        /*计算第n年牛的增长率的函数*/
    if (not_calced[n]) {
        if ( n<5 )          inc_data[n] = 0;
        else if ( n==5 )    inc_data[n] = 1;    /*满4周岁的时候开始生小牛,即第5年的增长率为1。*/
        else                inc_data[n] = inc(n-1) + inc(n-4);
        not_calced[n] = false;
    }
    return inc_data[n];
}

int main() {
    int n = 0;
    for (n=0; n<=101; n++)
        not_calced[n] = true;
        for (n=1; n<=100; n++) {
                printf("第%d年牛的数量:\t%14.0lf\n", n, fun(n));
        }
        return 0;
}

论坛徽章:
0
160 [报告]
发表于 2006-01-08 23:59 |只看该作者
我是按照每头牛在第四年会生下一头小牛。
年数:    1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16
母牛数目:1  1  1  2  3  4  6  9  13 19  28  41  60  88  129 189  
#include<iostream.h>
void main()
{
        int a[4];
        int i=0,n=16;
        for(i=0;i<n;i++)
        {
                if(i<3)
                        a[i]=1;
                 if(i==3)
                        a[i]=2;
                if(i>3)
                        a[i%4]=a[(i-1)%4]+a[(i-3)%4];
            cout<<(i+1)<<"年有母牛:"<<a[i%4]<<"头;"<<endl;
        }
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP