| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 557 人关注过本帖
标题:Presentation Error 帮忙看看啊!!
只看楼主 加入收藏
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:4 
Presentation Error 帮忙看看啊!!
描述
  有一片三角形的区域,有N行的钉子,第一行有一颗钉子,第二行有两颗钉子,第三行有三颗钉子.......
每两个钉子之间有一个固定的间隔大小固定,钉子的结构构造如下。。。* 代表钉子

N为1时        N为2时            N为3时         N为4时         
   *                   *                     *                   *               
                      * *                   * *                * *            
                                            * * *              * * *         ..........
                                                                * * * *         
 
现有一个小球落到如图所示的三角形区域的第一行的顶点。落到该点后会弹向下面一行左边或者右边的钉子,概率各为50%,如,落到第一行的第一个钉子的钉子概率为1.000,第二行的第一个为0.500,第二个0.5000,第三行的第一个为0.250,第二个为0.500,第三个为0.250,以此类推。。。
输入
多组测试数据,到文件末尾结束
每行有一个整数N,(1<=N<=10)代表钉子的行数。
输出
对于每组测试数据。
共输出N个小数,依次表示小球碰到第N行的第i个钉子的概率(精确到小数点后四位,i=1~N)。注意行末没有空格
样例输入
1
3
6
样例输出
1.0000
0.2500 0.5000 0.2500
0.0313 0.1563 0.3125 0.3125 0.1563 0.0313




#include<stdio.h>
#include<math.h>
int main()
{
    int i,j,n;
    float a[10][10]={0};
    float sum=0;
    a[0][0]=1;
    while(scanf("%d",&n)!=EOF)
    {
        sum=pow(2,n-1);
        for(i=1;i<n;i++)
            for(j=1;j<n;j++)
            {
                a[i][0]=1;
                a[i][i]=1;
                a[i][j]=a[i-1][j]+a[i-1][j-1];
            }
            for(i=0;i<n;i++)
            {
                a[n-1][i]/=sum;
                printf("%.4f ",a[n-1][i]);
            }
            printf("\n");
    }
    return 0;
}
搜索更多相关主题的帖子: 钉子 三角形 
2011-11-14 00:01
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
收藏
得分:0 
搞定了,行末多输出了一个空格
2011-11-14 00:22
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
代码是你自己编的吗
程序代码:
#include<stdio.h>
#include<math.h> //不需要引入
int main()
{
    int i,j,n;
    float a[10][10]={0};
    float sum=0; //整型更适合这个变量
    a[0][0]=1;
    while(scanf("%d",&n)!=EOF)
    {
        sum=pow(2,n-1); //2的幂直接移位更简单
        for(i=1;i<n;i++) //只需执行一次就可以,没必要每次都重新计算
            for(j=1;j<n;j++) //完全没有必要循环到n,多余的部分毫无意义
            {
                a[i][0]=1; //重复赋值,应该放在上一层循环里
                a[i][i]=1; //重复赋值,应该放在上一层循环里
                a[i][j]=a[i-1][j]+a[i-1][j-1];
            }
            for(i=0;i<n;i++)
            {
                a[n-1][i]/=sum; //重复的计算
                printf("%.4f ",a[n-1][i]); //问题你已经知道了
            }
            printf("\n");
    }
    return 0;
} 
送一段示例
程序代码:
#include<stdio.h>
int main()
{
    double a[11][11] = {0};
    int i, j;
    a[1][1] = 1;
    for(i = 2; i <= 10; i++)
    for(j = 1; j <= i; j++)
        a[i][j] = (a[i - 1][j - 1] + a[i - 1][j]) / 2;
    while(scanf("%d", &i) != EOF)
    {
        printf("%.4f", a[i][1]);
        for(j = 2; j <= i; printf(" %.4f", a[i][j++]));
        printf("\n");
    }
    return 0;
}

重剑无锋,大巧不工
2011-11-14 08:17
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
收藏
得分:0 
回复 3楼 beyondyf
好厉害!!!大虾啊!!!看了你写的,现在才发现我写的东东问题实在太大了!!!
2011-11-15 22:40
cb_1212
Rank: 1
等 级:新手上路
帖 子:126
专家分:5
注 册:2011-4-28
收藏
得分:0 
回复 3楼 beyondyf
嗯嗯,是我自己编的,刚接触编程,水平好烂好烂的!
2011-11-15 22:41
快速回复:Presentation Error 帮忙看看啊!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049253 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved