| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:填充三角形
只看楼主 加入收藏
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:11 
填充三角形
例如输入 3
输出 1 2 3
     6 4
     5
输入 4
输出 1 2 3 4
     9 10 5
     8 6
     7
搜索更多相关主题的帖子: 三角形 三角形 
2011-06-13 12:56
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 

My life is brilliant
2011-06-13 12:58
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
分三个方向填,每次改变方向的时候需要填充的长度 - 1
2011-06-13 14:05
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
#include "stdio.h"
main()
{
    int i,j,n,v=1,a[100][100]={0},l,k;
    scanf("%d",&n);

    for(i=0,j=0;j<n;j++)
     a[i][j]=v++;
     printf("\n");

    j--;
    l=n;
    while(l>1)
    {
      l--;
      for(k=0;k<l;k++)            
      { i++;
        j--;
        a[i][j]=v++;
      }
      l--;
      for(k=0;k<l;k++)
      {
       i--;
       a[i][j]=v++;
      }
       l--;
      for(k=0;k<l;k++)
      {
        j++;
        a[i][j]=v++;
      }
    }

    for(i=0;i<n;i++)
        {for(j=0;j<n;j++)
            { if(a[i][j])
                printf("%d  ",a[i][j]);
            }
        printf("\n");
        }
}

[ 本帖最后由 huwengui 于 2011-6-13 17:41 编辑 ]
2011-06-13 16:29
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:0 
自问自答啊?
2011-06-13 16:47
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
回复 4楼 huwengui
这个看着很眼熟的说,貌似我之前写过的填方形螺旋矩阵的代码

[ 本帖最后由 voidx 于 2011-6-13 16:51 编辑 ]
2011-06-13 16:49
huwengui
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:166
专家分:158
注 册:2011-4-22
收藏
得分:0 
回复 6楼 voidx
和那个一样的
2011-06-13 17:40
qldxsun
Rank: 4
等 级:业余侠客
帖 子:125
专家分:240
注 册:2011-6-4
收藏
得分:0 
学习下~
2011-06-13 23:27
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:1 
程序代码:
int i,j,k=0,s=0,n,a[100][100];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=0;
while(k<n/2)
{for(i=k,j=k;j<n-k;j++)
if(!a[i][j])
a[i][j]=++s;
for(i=k,j=n-2*k-1;i<n-k;i++,j--)
if(!a[i][j])
a[i][j]=++s;
for(i=n-k-1,j=k;i>k;i--)
if(!a[i][j])
a[i][j]=++s;
k++;}
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
if(a[i][j])
printf("%-5d",a[i][j]);
printf("\n");}


[ 本帖最后由 hjywyj 于 2011-6-14 17:53 编辑 ]
2011-06-14 08:04
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:2 
程序代码:
#include <stdio.h>
#include <math.h>
#define MAX_SIZE 20

static void triangle(int n, int r, int c, int count, int (* t)[MAX_SIZE]) {
    int i = r, j = c;
    if(n < 2) {
        if(n == 1)
            t[r][c] =count++;
        return;
    }
    while(j < c + n - 1)
        t[r][j++] = count++;
    while(i < r + n - 1)
        t[i++][j--] = count++;
    while(i > r)
        t[i--][c] = count++;
    triangle(n - 3, r + 1, c + 1, count, t);
}

static int sum(int n) {
    int s = 0;
    while(n)
        s += n--;
    return s;
}

int main(void) {
    int n, w, i, j, t[MAX_SIZE][MAX_SIZE] = {0};
    char format[5] = "%-xd";
    scanf("%d", &n);
    w = (int)log10(sum(n)) + 2;
    format[2] = w + '0';
    triangle(n, 0, 0, 1, t);
    for(i = 0; i < n; i++) {
        for(j = 0; j < n; j++)
            t[i][j] && printf(format, t[i][j]);
        printf("\n");
    }
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

跟矩形的差不多。


[ 本帖最后由 lz1091914999 于 2011-6-14 10:31 编辑 ]

My life is brilliant
2011-06-14 10:24
快速回复:填充三角形
数据加载中...
 
   



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

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