怎样让程序运行的时间更短

[复制链接]
查看11 | 回复1 | 2011-3-24 11:34:16 | 显示全部楼层 |阅读模式
#includestdio.h
int main(){
int n,sum=1;
int i,j,k=2,b;
while(scanf(\"%d\",
for(i=1;in;i)
{ k=k*2;
}
sum=sum k;
b=sum/2;
for(i=0;isum;i)
{
for(j=0;jsum;j)
{
if(i==0||i==b||i==sum-1)putchar(\' \');
else if(j==0||j==b||j==sum-1) putchar(\' \');
else putchar(\' \');
}
printf(\"\\n\");

}
}

return 0;

}
回复

使用道具 举报

千问 | 2011-3-24 11:34:16 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">#include \"stdafx.h\"
#include stdio.h
int main()
{
int n,i,j,k=1,b;

scanf(\"%d\",
if(n==0) return 0;

k=n;//for(i=1;in;i) k=k*2;这是想求2^n吧? k=1;k=n;等效于k=2;k=pow(2,n)
b=k1;/*b=k1等效于b=k/2;对于b=k/(2^n),也可用b=kn代替,且效率会高些*/

for(i=0;ik 1;i)
{
for(j=0;jk 1;j)
{
if(i==0||i==b||i==k)putchar(\'*\');
else if(j==0||j==b||j==k) putchar(\'*\');
else putchar(\' \');
}
printf(\"\\n\");
}
return 0;
}


/*
位运算是C语言的特色,通过位运算符可对数据进行位操作,这也是C语言接近汇编的原因。
在适当的地方用位操作能提高效率。
位操作符有:
左移 一个数在计算机中以二进制储存、运算,比如5,二进制位101,左移三位,得101000,表示40
可以看出,左移等效于成2^n:如上,40=5*(2^3)(对应101000=1013)
右移 等效于除以2^n
此外,位运算符还有:按位与defds123, 按位或|, 按位异或^等等
比如计算a=a,可以用a=adefds12315,代替 (凡是被余数为2^n的,皆可用a=adefds123(2^n-1) )算,比取余运算快

*/

















<h4 class=\"ask\">追问





<pre class=\"replyask-text\" id=\"content-2470887\">这方面推荐一本书看吧,我做了好几道题,都是因为 Time Limit Exceeded通不过 ,谢谢。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行