c-猴子吃桃问题模型,为什么结果不对?

问题描述

猴子吃桃问题模型,为什么结果不对?

#include
#define SIZE 10
int main() {
int i;
int a[SIZE]={0};
while(i==1)
a[i]=1;
for (i=2;i<=SIZE;++i) {
a[i]=2*(a[i-1]+1);

    printf("a[%d]=%d
",i,a[i]);
}
return 0;

}

解决方案

 #include<stdio.h>
#define SIZE 11 //修改
int main() {
    int i;
    int a[SIZE]={0};
    //while(i==1)//修改
    a[1]=1;
    for (i=2;i<SIZE;++i) {//修改
        a[i]=2*(a[i-1]+1);
        printf("a[%d]=%d
",i,a[i]);
    }
    return 0;
}

解决方案二:

猴子吃桃问题
猴子吃桃问题
猴子吃桃问题

解决方案三:

while(i==1)
a[i]=1;
你的这两句有问题吧,还有int i时,
你也没有给i初始化啊?没初始化上面两行就不会运行
所以a[1] = 0吧!

解决方案四:

while(i==1)
a[i]=1;
你的这两句有问题吧,还有int i时,
你也没有给i初始化啊?没初始化上面两行就不会运行
所以a[1] = 0吧!

解决方案五:

for (i=2;i<=SIZE;++i)这句应该修改为for (i=2; i<SIZE; i++),否则导致数组下标越界

解决方案六:

http://blog.csdn.net/xianfajushi/article/details/27975567

时间: 2024-09-20 15:18:53

c-猴子吃桃问题模型,为什么结果不对?的相关文章

c语言-猴子吃桃问题C语言实现,快点快点下午要交

问题描述 猴子吃桃问题C语言实现,快点快点下午要交 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时,见只剩下一个桃子了.求第一天共摘了多少. 解决方案 http://zhidao.baidu.com/question/353744584.html 解决方案二: http://zhidao.baidu.com/question/187548274.html?q

猴子吃桃问题

猴子吃桃问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:0 描述 有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第m天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? (m<29) 输入 第一行有一个整数n,表示有n组测试数据(从第二行开始,每一行的数据为:第m天): 输出 每一行数据是桃子的总个数 样例输入 2 3 11 样例输出 22 6142 查看代码---运行号:252348----结果:Ac

编程 信息学奥赛-一道Pascal 编程问题 猴子吃桃

问题描述 一道Pascal 编程问题 猴子吃桃 [问题叙述] 有两堆桃子,数量任意,可以不同.大猴子和小猴子轮流吃桃子.两只猴子约定:每次有两种不同的吃法,一种是可以在任意一堆取走任意多的桃子:二是可以在任意两堆中取走相同数量的桃子,最后把桃子全部取完者为胜者.现在给出两堆桃子的开始数目.如果让小猴子先取,假设双方都采取最好的策略,你来确定小猴子是胜者还是败者. [输入] 输入文件monkey.in的第一行只有一个数m,表示输入文件中有m种情况.第二行至第m+1行,每行有两个正整数a和b(这二个

经典算法题每日演练——第三题 猴子吃桃

原文:经典算法题每日演练--第三题 猴子吃桃           猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个.第二天早上又将剩下的桃子吃了一半,还是不过瘾又多 吃了一个.以后每天都吃前一天剩下的一半再加一个.到第10天刚好剩一个.问猴子第一天摘了多少个桃子?   分析: 这是一套非常经典的算法题,这个题目体现了算法思想中的递推思想,递归有两种形式,顺推和逆推,针对递推,只要         我们找到递推公式,问题就迎刃而解了.                令S10=1,容易看

C语言实现的猴子吃桃问题算法解决方案_C 语言

本文实例讲述了C语言实现的猴子吃桃问题.分享给大家供大家参考,具体如下: 问题: 猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个.第二天又将剩下的桃子吃掉一半,又多吃了一个.以后每天都吃前一天剩下的一半零一个.到第10天在想吃的时候就剩一个桃子了,求第一天共摘下来多少个桃子? 解析: ① 从最后一天的x=1个,倒推出前一天的个数x,需要注意的是表达式为x=2(x+1),而不是x=2x+1,注意两者之间的区别,想清楚为什么第二种不正确. ② 将该表达式作为循环9次的循环体,并在该语

猴子吃桃问题---C实现

原题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每一天早上都吃前一天剩下桃子的一半零一个.到第十天早上想再吃时,发现 只剩下一个桃子了.编写程序,求第一天共摘了多少个桃子? 分析思路: 首先要找出第一天的桃子和第二天的桃子数之间的关系,即第一天的桃子数是第二天桃子数加1的两倍. 接下来写代码: #include <stdio.h> int main(void) { int day = 9 ; int n1 , n2 =

C语言实现的猴子分桃问题算法解决方案_C 语言

本文实例讲述了C语言实现的猴子分桃问题算法.分享给大家供大家参考,具体如下: 问题: 海滩上有一堆桃子,五只猴子来分.第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份.第二只猴子把剩下的桃子又平均 分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三.第四.第五只猴子都是这样做的,问海滩上原来最少有多少个桃子? 程序: #include<stdio.h> int divided(int n, int m) //注意该递归函数的定义 { if(n/5

编码练习:猴子捡桃

插入前面:这段内容本来在下面猴子分桃题目之前是没有的,想看题,可以先看后面的题目,然后看着插入在前面的关于递归实现下面问题的代码,为什么要突然放在前面,因为这是一部分比较重要的内容,是个思想锻炼的结果和总结,另外最后吗还给出了错误的代码以及错误的原因可以对比理清思路: 1 #include <iostream> 2 using namespace std; 3 4 5 int recursion(int time,int n) 6 { 7 int sum; 8 if (time == 0) {

JAVA多线程(三个猴子分桃)操作,为什么总是出现一个线程,求大神!

问题描述 JAVA多线程(三个猴子分桃)操作,为什么总是出现一个线程,求大神! public class ThreadDemo { int mutex = 100; boolean isRun = true; int i = 0; public static void main(String[] args) { Monkey m = new ThreadDemo().new Monkey(); new Thread(m, "1").start(); new Thread(m, &quo