首页 > 其他分享 >浙江理工大学入队200题——12A

浙江理工大学入队200题——12A

时间:2022-10-29 12:56:07浏览次数:58  
标签:200 回型 12A ++ int 入队 continue && --

问题 A: 零基础学C/C++126——回型矩阵

题目描述

输出n*m的回型矩阵

输入

多组测试数据 每组输入2个整数 n和m(不大于10,且不同时为10)

输出

输出n*m的回型矩阵,要求左上角元素是1,(每个元素占2个位置,靠右)

样例输入 Copy

4 3

样例输出 Copy

1 2 3
10 11 4
9 12 5
8 7 6

题解

如上所示,我们有两个思路解决,一个是正常思路,按行然后按列然后再按行···但是会发现最后还要判断最后是按行展开还是按列,比较头疼
那么我们讲解第二种思路,因为我们每个位置的数都是可以根据上一个位置得来的,主要有四种变化,右++,下++,左++,上++,写起来也是比较头疼,不过题目本身就这样没办法。
如果你有更好思路与代码,可以来跟我分享(^U^)ノ~YO

代码(AC)

点击查看代码
#include <stdio.h>
#include <math.h>	
int main (){
	int m,n;
	while(scanf("%d%d",&m,&n)!=EOF)
	{
		int a[m][n];
		for(int i=0;i<m;i++)
		{
			for(int j=0;j<n;j++)
			{
				a[i][j]=0;
			}
		}
		a[0][0]=1;
		int x=0,y=1;
		for(int i=2;i<=m*n;i++)
		{
			a[x][y]=i;
			if(a[x][y]==a[x][y-1]+1 && y+1<n && a[x][y+1]==0) {y++;continue;}
			else if(a[x][y]==a[x][y-1]+1 && (y+1<=n || a[x][y+1]!=0)) {x++;continue;}
			
			if(a[x][y]==a[x-1][y]+1 && x+1<m && a[x+1][y]==0) {x++;continue;}
			else if(a[x][y]==a[x-1][y]+1 && (x+1<=m || a[x+1][y]!=0)){y--;continue;}
			
			if(a[x][y]==a[x][y+1]+1 && y>=0 && a[x][y-1]==0) {y--;continue;}
			else if(a[x][y]==a[x][y+1]+1 && (y>=0 || a[x][y-1]!=0)){x--;continue;}
			
			if(a[x][y]==a[x+1][y]+1 && x>=0 && a[x-1][y]==0) {x--;continue;}
			else if(a[x][y]==a[x+1][y]+1 && (x>=0 || a[x-1][y]!=0)){y++;continue;}
			
		}
		for(int i=0;i<m;i++)
		{
			for(int j=0;j<n;j++)
			{
				printf("%2d",a[i][j]);
				if(j<n-1) printf(" ");
				if(j==n-1) printf("\n");
			}
		}
	}	
	return 0;
}

标签:200,回型,12A,++,int,入队,continue,&&,--
From: https://www.cnblogs.com/codeshany/p/zstu_200_12A.html

相关文章

  • 浙江理工大学入队200题——11J
    问题J:零基础学C/C++125——矩阵乘积题目描述输入一个m×n的整数矩阵A,再输入一个n×m的整数矩阵B。计算C=A×B。输入输入为多组测试数据。先输入m和n(m和n均≤10),另起......
  • 【SCOI2007】k短路(A_)
    考虑用\(A^*\)维护这个东西,由于其它题解都讲得很清楚\(A^*\)的原理了,我就在这里说一下这题需要注意的地方。按照\(A^*\)的套路,我们要把估价函数设为当前点到\(b\)......
  • 【SCOI2005】骑士精神(IDA_,A_)
    我们先考虑最纯粹的暴力,也就是暴力枚举每次空格调到哪里,并继续递归求解。然后发现\(O(8^{15}\times5\times5)\)的复杂度限制了我们的想象。同学写了一发好像10分然后既......
  • 浙江理工大学入队200题——11FI
    问题I:零基础学C/C++124——海选女主角题目描述刚好来了m*n个MM,站成一个m*n的队列,副导演Fe(OH)2为每个MM打了分数,分数都是32位有符号整数。一开始我很纳闷:分数怎么还......
  • 浙江理工大学入队200题——11G
    问题G:零基础学C/C++122——杨辉三角题目描述还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:1111211331输入输入数据包含多......
  • 浙江理工大学入队200题——11H
    问题H:零基础学C/C++123——矩阵鞍点题目描述输入一个正整数n(1<=n<=6)和n阶方阵a中的每一个元素,如果找到a的鞍点(鞍点的元素值在该行上最大,在该列上最小),就输出它的下......
  • 浙江理工大学入队200题——11D
    问题D:零基础学C/C++119——矩阵整理题目描述输入一个m×n的矩阵,计算每行的和。将行号最高的行与矩阵的第一行进行位置交换,输出调整后的矩阵以及每行的和。输入输入......
  • 浙江理工大学入队200题——11F
    问题C:零基础学C/C++118——弓型矩阵题目描述输入一个正整数n(1<=n<=6)和n阶方阵a中的每一个元素,如果a是上三角矩阵,输出“YES",否则输出”NO"(上三角矩阵即主对角线以......
  • 浙江理工大学入队200题——11C
    问题C:零基础学C/C++118——弓型矩阵题目描述输出n*m的弓型矩阵输入多组测试数据每组输入2个整数n和m(不大于10)输出输出n*m的弓型矩阵,要求左上角元素是1,(每个元......
  • 浙江理工大学入队200题——10E
    问题E:零基础学C/C++114——直接插入排序题目描述编一C程序,该程序可以测试多个测试组,每个测试组它能读入一串整数并对它们进行从小到大直接插入排序,同时输出排序时对这......