| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1203 人关注过本帖
标题:[讨论]寻最简单的算法.
只看楼主 加入收藏
I喜欢c
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:64
帖 子:1749
专家分:0
注 册:2007-3-2
收藏
得分:0 


都那样做了..
还谈算法干嘛

 我是指针,却丢失了目标地址!          我是循环,却缺少了结束条件!      我是函数,却没有人来调用!   
2007-04-22 17:06
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
#include<stdio.h>
int main()
{
int n,m,i,j;
printf("please input the number of the pyramid!\n");
scanf("%d",&n);
n-=1;
for(m=0;m<=n;m++)
{
for(i=0;i<=n-m;i++)
printf(" ");
for(j=0;j<=2*m;j++)
printf("*");
printf("\n");
}
getch();
return 0;
}

这个是金字塔的代码

至于你想要的你图案的下半部,你就按照我的方法给它进行倒推就可以了

至于算法,呵呵,就请你自己把实际数字带入m,i,j进去看看就知道了

这种题目不难

自我放逐。。。
2007-04-22 17:26
crackerwang
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:833
专家分:0
注 册:2007-2-14
收藏
得分:0 
我和楼上一样.

2007-04-22 19:26
xiancer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-4-21
收藏
得分:0 
就是这样了
#include<stdio.h>
void main()
{
int i,j;
clrscr();
for(i=1;i<=4;i++)
{gotoxy(5-i,i);
for(j=1;j<=2*i-1;j++)
printf("*");
}
for(i=1;i<=3;i++)
{
gotoxy(i+1,i+4);
for(j=1;j<=7-2*i;j++)
printf("*");
}
}

2007-04-22 21:16
cince
Rank: 1
等 级:新手上路
威 望:1
帖 子:108
专家分:0
注 册:2007-1-21
收藏
得分:0 

(我是用了C++,你自己转换一下吧。算法是一样的)
使用的算法如下

BEGIN:
for(i=1;i<=4;i++) 从第一行到第四行
for(j=1;j<=16-i;j++) 第i行右移的次数(在*的前面有空格,所以要右移)
print space 打印空格

endfor j 结束j的循环

for(k=1;k<=(2*i-1);k++) 输出*的个数
print *; 打印*

endfor k 结束k循环

CR 换行

endfor i 结束i的循环

for(i=1;i<=3;i++) 从倒数第i行到第1行
for(j=1;j<=(i+12);j++) 从第i行右移的次数
print space; 输出空格

endfor j 结束j的循环

for(k=1;k<=(-2*i);k++) 输出*的个数
print * 打印*

endfor k 结束k循环

CR 换行

endfor i 结束i的循环

END

主要是要弄懂算法。。以下的程序仅供参考。


#include <iostream>
using namespace std;

void main()
{
int i,j,k;
for(i+1;i<=4;i++)
{

for(j=1;j<=16;j++)
cout<<\" \";
for(k=1;k<=(2*i-1);k++)
cout<<\"*\";
cout<<endl;
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i+2;j++)
cout<<\" \";
for(k=1;k<=(7-2*i);k++)
cout<<\"*\";

cout<<endl;
}
}

[此贴子已经被作者于2007-4-22 21:41:37编辑过]


There Is Nothing Impossible In My Dictionary.
2007-04-22 21:19
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用neverTheSame在2007-4-22 16:10:26的发言:
printf(" *\n");
printf(" ***\n");
printf(" *****\n");
printf("*******\n");
printf(" *****\n");
printf(" ***\n");
printf(" *\n");

puts(" *");
puts(" ***");
puts(" *****");
puts("*******");
puts(" *****");
puts(" ***");
puts(" *");

更快

2007-04-22 22:14
沙漠水手
Rank: 2
等 级:论坛游民
帖 子:69
专家分:40
注 册:2007-3-17
收藏
得分:0 
可以用字符数组,直接初始化,然后printf
2007-04-23 14:49
oclassic
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2007-4-18
收藏
得分:0 
谢谢各位大虾啦. 还真不少啊.

编程群号码30772309群刚刚建立一个论坛http://tszbbs./?u=2 诚招斑猪哦
2007-04-23 16:35
cjx1028
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-9-3
收藏
得分:0 

#include<stdio.h>
main()
{
char a[]="*******",b[]=" ";
int i,j;

for(i=6,j=0;i>=0;i-=2,j++)
printf("%s%s\n",b+j,a+i);
for(i=2,j=2;i<=6;i+=2,j--)
printf("%s%s\n",b+j,a+i);
getch();
}


QQ:136687497 email:cjx1028@
2007-04-23 20:22
oclassic
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2007-4-18
收藏
得分:0 
楼上的也不错啊

编程群号码30772309群刚刚建立一个论坛http://tszbbs./?u=2 诚招斑猪哦
2007-04-23 20:27
快速回复:[讨论]寻最简单的算法.
数据加载中...
 
   



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

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