本文共 1405 字,大约阅读时间需要 4 分钟。
在日常做编程题目的时候,想必大家在很多简单的问题上采取了麻烦的做法,如:四舍五入,最后一位输出回车等等…
接下来,我分享一下,我接触过日常的编程小技巧 ↓↓↓↓对于一个浮点数的四舍五入,可以自身+0.5之后再除1来进行。
例如:5.5四舍五入就可以用以上化简方式: (5.5+1)/1 = 6
for(int i = 0; i < n; i ++){ printf("%d%c", ans[i], i==n-1?'\n':' '); }
想必大家对线性规划有一定的了解活着说是非常熟悉,但是我今天想说的就是把这种数学计算思维应用在编程当中。
大家可以把控制台的横向和纵向看成是一个坐标轴,只不过这个坐标轴的原点在左上方,y轴也是向下的。
拿一道例题来说明吧~~
描述
金中食堂做的蛋糕总是做成菱形,琪琪希望蛋糕上能裱上一圈小花,她想请你再帮个忙,用电脑画出用“*”号组成的裱花形状,这将是个空心的菱形。输入
一个整数,n>0。 输出 由n*2-1层 “*” 号组成的空心菱形。 样例输入5
样例输出
* * * * * * ** * * * * * * * *
代码如下:
#includeint main(){ int n,i,j; scanf("%d",&n); for(i=1;i<=n*2-1;i++) { for(j=1;j<=n*2-1;j++) { if((i==-j+n+1)||(i==j-n+1)||(i==j+n-1)||(i==-j+3*n-1)) printf("*"); else printf(" "); } printf("\n"); } return 0;}
当然扩展一下,如果想做出实心菱形,那么只需要把逻辑判断等于换成大于小于即可
代码如下:#includeint main(){ int n,i,j; scanf("%d",&n); for(i=1;i<=n*2-1;i++) { for(j=1;j<=n*2-1;j++) { if((i>=-j+n+1)&&(i>=j-n+1)&&(i<=j+n-1)&&(i<=-j+3*n-1)) printf("*"); else printf(" "); } printf("\n"); } return 0;}
当然,代码没有考虑菱形右边的空格问题,但是我想说说明的是计算思维应用到编程中会大大提升效率,无论是时间复杂度还是空间复杂度!
转载地址:http://dbfe.baihongyu.com/