小 (替换文字 - 「wikioi」替换为「codevs」) |
小 (云璟月移动WikiOI/1160页面至CodeVS/1160:替换文字 - 「WikiOI」替换为「CodeVS」) |
(没有差异)
|
题目链接 | 难度等级 | 完成状态 | 完成分数 | 最后编辑时间 | 需要注意 |
---|---|---|---|---|---|
蛇形矩阵 | ★☆☆☆☆ | 答案正确 | 100 | {{{time}}} | 无 |
输出n*n的蛇形矩阵及其对角线之和。
欸,纯模拟了。
很明显从最中间到最右下角一列是完全平方数,然后从这里入手一圈一圈填表。填完表输出,顺带处理下对角线求和就好了。
瞄了一眼评论区看到个打表的十分无奈。(点头)嗯,打表是个好方法!
1160.cpp代码已折叠
展开折叠内容
|
---|
#include<cstdio> int main(){ int n,u[200][200],x,y,i,j,t,s=0; scanf("%d",&n); for(i=n/2+1,t=1;i<=n;++i,t+=2){ u[i][i]=t*t; x=y=i; while(y>i-t+1) --y,u[x][y]=u[x][y+1]-1; while(x>i-t+1) --x,u[x][y]=u[x+1][y]-1; while(y<i) ++y,u[x][y]=u[x][y-1]-1; while(x<i-1) ++x,u[x][y]=u[x-1][y]-1; } for(i=1;i<=n;++i){ for(j=1;j<=n;++j){ printf("%d ",u[i][j]); s+=((i==j||i+j==n+1)?u[i][j]:0); } printf("\n"); } printf("%d",s); return 0; } |