免费注册 查看新帖 |

Chinaunix

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

程序员最基本的能力应该是会数数 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2011-09-22 15:29 |只看该作者
本帖最后由 fanronghua 于 2011-09-22 16:04 编辑

很简单 又是链表问题。
root

for (i = 1 ; i < 6; i ++)
{
   while( (node->next != NULL) && node->new = false))
   {
    //如果是大兔子,创建新节点,插入
if (big = node-type)
{
   create(node) node->new = true;
node-year=1; node-type= litter;
}
   //如果是小兔子,更改节点类型
  if (litter = node-type) && (node-year=2)  node->type = big;
  else
   if (litter = node-type) && (node-year=1)node-year=2;
   }
// 把所有节点->new = false;
}

//数节点就玩了。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
32 [报告]
发表于 2011-09-22 15:35 |只看该作者
先模拟一下比较好,我觉得现在研究的主要方法应该是先模拟,然后看看有没有什么规律,然后在考虑这个规律是不是可以从数学上给一个证明。

论坛徽章:
0
33 [报告]
发表于 2011-09-22 16:05 |只看该作者
只要有思路就可以了嗄

论坛徽章:
0
34 [报告]
发表于 2011-09-22 16:26 |只看该作者
回复 29# 狗蛋


    是的 要是没有 f(n)=f(n-1)+f(n-2)-f(n-12) 最后一项也还是个F式数列,有了最后一项就说不太清楚了

论坛徽章:
0
35 [报告]
发表于 2011-09-22 16:27 |只看该作者
回复 31# fanronghua


    不至于链表那么复杂吧,我觉得一个数组就够了

论坛徽章:
0
36 [报告]
发表于 2011-09-22 16:30 |只看该作者
只要有思路就可以了嗄
fanronghua 发表于 2011-09-22 16:05



    我觉得这个题如何数数是个比较困难的地方,只要一不小心差个1就全错了

论坛徽章:
0
37 [报告]
发表于 2011-09-22 16:32 |只看该作者
回复  fanronghua


    不至于链表那么复杂吧,我觉得一个数组就够了
KBTiller 发表于 2011-09-22 16:27



    对数组也是,应该数组比较好,只要在记录 大兔子,小兔的个数,就可以了。

论坛徽章:
0
38 [报告]
发表于 2011-09-22 18:02 |只看该作者
假定第一年年初投放了一对刚出生的小兔子,问,第1、2、3年末各总共会有多少对兔子。
int main()
{
        int i, n, *p;

        p = &rabbits[2];
        p[0] = 1;

        for (i = 1; i <= 6; i++)
                p[i] = p[i - 1] + p[i - 2];
        printf("%d, %d, %d\n", p[2], p[4], p[6]);

        return 0;
}


        /* 一对小兔子一年后长成大兔子;一对大兔子每半年生一对小兔子。大兔子的繁殖期为4年,兔子的寿命是6年。
         * 假定第一年年初投放了一对小兔子,试编程计算,第n年末总共会有多少对兔子。n由键盘输入。
         */

int rbt[MAX_YEAR * 2];
       
int main()
{
        int i, n, *p;

        p = &rbt[32];
        p[0] = 1;

        scanf("%d", &n);
        for (i = 1; i <= n * 2; i++)
                p[i] = p[i - 1] + p[i - 2] - p[i - 8] - p[i - 12];
        printf("%d\n", p[n * 2]);
        return 0;
}

论坛徽章:
0
39 [报告]
发表于 2011-09-22 18:08 |只看该作者
回复  KBTiller

这是观cnblogs有感对吧?
很多人只会背答案、不会推过程,而且遇见背过答案的类似题目总会很兴奋……
比如某天校内上有人状态里出了一个最最简单的题目100公斤铁与100斤棉花哪个更重?
一堆人错……
OwnWaterloo 发表于 2011-09-22 11:28


铁更重些

论坛徽章:
0
40 [报告]
发表于 2011-09-22 18:28 |只看该作者
本帖最后由 狗蛋 于 2011-09-22 18:32 编辑
铁更重些
aychxm 发表于 2011-09-22 18:08



    排开空气?

不过,貌似在地球上称东西的时候,都是在空气中称的……
所以,如果是在空气中称得的数据,再定义“重”是受到的重力+空气浮力的合力,则两者一样重;若定义“重”是质量,则棉花更重;


如果题目数据是质量,问所受重力+浮力合力,那么显然铁“重”。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP