用最小循环优化c中的空心菱形图案打印
我正在尝试打印带有*轮廓的空心菱形图案,最小循环。我优化了2个循环 我的输出使用2个循环用最小循环优化c中的空心菱形图案打印,c,performance,loops,design-patterns,C,Performance,Loops,Design Patterns,我正在尝试打印带有*轮廓的空心菱形图案,最小循环。我优化了2个循环 我的输出使用2个循环 Enter no of rows: 5 *********** ***** ***** **** **** *** *** ** ** * * ** ** *** *** **** **** ***** ***** *********** 还有其他方法可以优化这段代码吗 void main() { int row,col,n,
Enter no of rows: 5
***********
***** *****
**** ****
*** ***
** **
* *
** **
*** ***
**** ****
***** *****
***********
还有其他方法可以优化这段代码吗
void main()
{
int row,col,n,k;
printf("Enter no of rows: ");
scanf("%d",&n);
for(row=0, k=1; row<=2*n; row>n?k++:k, printf("\n"), row++)
for(col=-n; col<=n; col++)
(col>0?col:-col) < (row<=n?row:(row-2*k)) ? printf(" ") : printf("*");
}
void main()
{
int行,列,n,k;
printf(“输入行数:”);
scanf(“%d”和“&n”);
对于(行=0,k=1;行?k++:k,printf(“\n”),行++)
对于(col=-n;col0?col:-col)<(row您可以通过计算(row)“最小循环”是指“最小循环数”还是其他什么?通过“优化”,这个问题可能更适合“编程难题和代码高尔夫”网站你的意思是花更少的时间吗?如果不是,请忽略此注释。如果是,你是否理解printf
比这里的任何东西花费的时间都多几个数量级?你是否理解循环本身并不慢,只是因为它们在概念上可能很复杂?
int row,col,n,k;
printf("Enter no of rows: ");
scanf("%d",&n);
for(row=0, k=1; row<=2*n; row>n?k++:k, putchar('\n'), row++)
{
int z=(row<=n?row:(row-2*k));
for(col=-n; col<=n; col++)
putchar((col>0?col:-col) < z ? ' ' : '*');
}