【xsy1097】 拼图 构造题
题目大意:请你使用n个图形拼成一个矩形。要求:①这每个图形都由1×1的小正方形组成,而且第i个图形由i个小正方形组成。②除了第1个和第2个图形以外,任意一个图形的所有小正方形,不都在一条直线上。
数据范围:n≤1000
当n为奇数时,我们这么构造:
当n为偶数时,我们n为奇数的基础上,在原矩阵下方加多两排n就好了。
1 #include<bits/stdc++.h> 2 #define M 2005 3 using namespace std; 4 5 int a[M][M]={0}; 6 7 int main(){ 8 int n,m; scanf("%d",&n); m=(n+1)/2; 9 int hh=0; if(n%2==0) hh=1,n--; 10 for(int i=1;i<=m;i++) a[n+1][i]=a[n+2][i]=n+1; 11 for(int x=n,i=1;x>m;x--,i++){ 12 int nowx=i+1,nowy=i; 13 for(int j=1;j<=x;j++,nowx++){ 14 if(a[nowx][nowy]) nowx--,nowy++; 15 a[nowx][nowy]=x; 16 } 17 } 18 for(int x=m,i=1;x>0;x--,i+=2){ 19 int nowx=1,nowy=i; 20 for(int j=1;j<=x;j++,nowx++){ 21 if(a[nowx][nowy]) nowx--,nowy++; 22 a[nowx][nowy]=x; 23 } 24 x--; 25 for(int j=1;j<=x;j++,nowx++){ 26 if(a[nowx][nowy]) nowx--,nowy++; 27 a[nowx][nowy]=x; 28 } 29 } 30 printf("%d %d\n",n+(hh*2),m); 31 for(int i=1;i<=n+(hh*2);i++,printf("\n")) 32 for(int j=1;j<=m;j++) printf("%d ",a[i][j]); 33 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!