| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 841 人关注过本帖, 1 人收藏
标题:奇葩的杨辉三角
只看楼主 加入收藏
cherryljr
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-10-25
结帖率:100%
收藏(1)
 问题点数:0 回复次数:10 
奇葩的杨辉三角
杨辉三角想必大家都会了,可我最近看到一题需要把杨辉三角倒过来变成一个正方形的题目啊。不是为了求答案是真心没什么思路的啊。求大家指点一下啊。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1(左下半部分)
1 4 6 4 1
  1 3 3 1
    1 2 1
      1 1
        1 (右上半部分)
然后把下面的倒上去啊:
1 4 6 4 1
1 1 3 3 1
1 2 1 2 1
1 3 3 1 1
1 4 6 4 1
(当然不要出现用一个printf直接解决的,要求输入行数的,求思路啊!)
搜索更多相关主题的帖子: 杨辉三角 正方形 
2013-01-01 12:18
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
代码来自https://bbs.bccn.net/viewthread.php?tid=388806&highlight=%D1%EE%BB%D4%C8%FD%BD%C7
由万哥(wp231957)编写!我只是在输出函数哪里改动了一下
(万哥,我懒得去敲,就借用了一下您老的代码,您老不会介意吧)
程序代码:
#include <stdio.h>

 //本程序演示了用二维数组来输出一个9行9列的杨辉三角
 int main(void)

 {
     int n=9;
     int yhsj[9][9];
     int i,j;
     /////为二维数组赋初值
     for(i=0;i<n;i++)
         for(j=0;j<n;j++)
         {
             yhsj[i][j]=0;
         }
     //以下用杨辉三角公式填充二维数组
     yhsj[0][0]=1;
     for(i=1;i<n;i++)
         for(j=0;j<=i;j++)
         {
             if(j==0) yhsj[i][j]=yhsj[i-1][j]; else  //处理数组第一列
                 if(j==n-1) yhsj[i][j]=yhsj[i-1][j-1];else  //处理数组最后一列
                      yhsj[i][j]=yhsj[i-1][j-1]+yhsj[i-1][j];
         }
     //以下用于屏幕输出二维数组
     for(i=0;i<n;i++)
     {
         for(j=0;j<n;j++)
         {
             if(yhsj[i][j]>0)
             {
                 printf("%4.0d",yhsj[i][j]);
             }
         }
         for(j=0;j<n;j++)//我只是将这里多加了一个反序输出
         {
             if(yhsj[n-1-i][n-1-j]>1||n-1-j==0&&n-1-i!=0)
             {
                 printf("%4.0d",yhsj[n-1-i][n-1-j]);
             }
         }
       
         printf("\n");
     }
     return 0;

 }

 /*一下是效果图
   1   8  28  56  70  56  28   8   1
   1   1   7  21  35  35  21   7   1
   1   2   1   6  15  20  15   6   1
   1   3   3   1   5  10  10   5   1
   1   4   6   4   1   4   6   4   1
   1   5  10  10   5   1   3   3   1
   1   6  15  20  15   6   1   2   1
   1   7  21  35  35  21   7   1   1
   1   8  28  56  70  56  28   8   1
*/

 

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2013-01-01 13:04
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 2楼 额外覆盖
我正有此意,倒是被你抢先了  呵呵

DO IT YOURSELF !
2013-01-01 13:38
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
回复 3楼 wp231957
万哥,对不起,抢了你的活儿!

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2013-01-01 22:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用额外覆盖在2013-1-1 22:06:03的发言:

万哥,对不起,抢了你的活儿!
好的很  下次投票选你哦

DO IT YOURSELF !
2013-01-01 22:07
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
回复 5楼 wp231957
算了!我还是有自知之明!我现在还没那个实力啊,能否申请保留,等以后再说!哈哈!

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2013-01-01 22:09
cherryljr
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-10-25
收藏
得分:0 
上课来晚了……可是用数组这样的话怎么手动输入行数啊?
我之前是用for循环实现手动输入的。可数组我真心不会了……
不过思路多谢哈,忘记还可以反序输出哈
2013-01-07 14:45
cherryljr
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-10-25
收藏
得分:0 
多谢,我懂了!再次感谢两位大神相助
2013-01-07 16:55
cherryljr
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-10-25
收藏
得分:0 
回复 2楼 额外覆盖
#include <stdio.h>
int main(void)
{
     int n;
     int y[9][9];
     int i,j;
     scanf("%d",&n);
     for(i=0;i<n;i++)
         for(j=0;j<n;j++)
         {
             y[i][j]=0;
         }
         y[0][0]=1;
     for(i=1;i<n;i++)
         for(j=0;j<n;j++)
         {
             if(j==0||j==i) y[i][j]=1; else  
             y[i][j]=y[i-1][j-1]+y[i-1][j];
         }
     for(i=0;i<n;i++)
     {
         for(j=0;j<n;j++)
         {
             if(y[i][j]>0)
             {
                 printf("%4.0d",y[i][j]);
             }
         }
         for(j=0;j<n;j++)
         {
             if(y[n-1-i][n-1-j]>1||n-1-j==0&&n-1-i!=0)
             {
                 printf("%4.0d",y[n-1-i][n-1-j]);
             }
         }
         printf("\n");
     }
     return 0;
}
我稍稍改了点,可是发现就出问题了,看样子是没有初始化的问题,可是是为什么呢?y[0][0]的值应该可以在下面for(i=0;i<n;i++)这边赋值啊。怎么不可以呢?
这是我改后的:
#include <stdio.h>
int main(void)
{
     int n;
     int y[9][9];
     int i,j;
     scanf("%d",&n);
     for(i=0;i<n;i++)
         for(j=0;j<n;j++)
         {
             y[i][j]=0;
         }
        
     for(i=0;i<n;i++)
         for(j=0;j<n;j++)
         {
             if(j==0||j==i) y[i][j]=1; else  
             y[i][j]=y[i-1][j-1]+y[i-1][j];
         }
     for(i=0;i<n;i++)
     {
         for(j=0;j<n;j++)
         {
             if(y[i][j]>0)
             {
                 printf("%4.0d",y[i][j]);
             }
         }
         for(j=0;j<n;j++)
         {
             if(y[n-1-i][n-1-j]>1||n-1-j==0&&n-1-i!=0)
             {
                 printf("%4.0d",y[n-1-i][n-1-j]);
             }
         }
         printf("\n");
     }
     return 0;
}
2013-01-07 18:24
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
收藏
得分:0 
for(i=0;i<n;i++)
          for(j=0;j<n;j++)
          {
              if(j==0||j==i) y[i][j]=1; else  
              y[i][j]=y[i-1][j-1]+y[i-1][j];//如果此处i=0呢?
          }

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2013-01-07 21:13
快速回复:奇葩的杨辉三角
数据加载中...
 
   



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

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