「java编程蛇形矩阵」c++蛇形矩阵
本篇文章给大家谈谈java编程蛇形矩阵,以及c++蛇形矩阵对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、ACM题目(倒蛇阵填数)求java解法
- 2、JAVA语言的蛇形矩阵怎么弄求教? 最好带注视
- 3、以下蛇形矩阵用 "二维数组+循环" 打:
- 4、JAVA编程9. 蛇形矩阵:生成一个按蛇形方式排列自然数1,2,3,4,5,……,N2的 (1
- 5、java编程: 如何判断 二维数组 是否为蛇形矩阵?
ACM题目(倒蛇阵填数)求java解法
按照题目要求编写的倒蛇形矩阵的Java程序如下
import java.util.Scanner;
public class A {
public static void main(String[] args) {
int i,j,k,n,m,count=1;
Scanner sc=new Scanner(System.in);
int N=sc.nextInt();
while(N!=0){
if(N=10)
System.out.println("请输入小于10的正整数");
else{
int a[][]=new int[N][N];
if(N%2==0){
n=N/2;
}else{
n=N/2+1;
}
for(i=n-1;i=0;i--){
for(j=N-i-2;j=i+1;j--){
a[i][j]=count++;
}
for(j=i;jN-i;j++){
a[j][i]=count++;
}
k=N-i-1;
for(j=i+1;jN-i;j++){
a[k][j]=count++;
}
for(j=N-i-2;j=i;j--){
a[j][k]=count++;
}
}
for(i=0;iN;i++){
for(j=0;jN;j++){
System.out.printf("%-3d",a[i][j]);
}
System.out.println();
}
System.out.println();
}
N=sc.nextInt();
count=1;
}
}
}
运行结果
JAVA语言的蛇形矩阵怎么弄求教? 最好带注视
Java
public class Snake {
public static void main(String args[]) {
int number = 16;
int[][] ary = show(number);
int length = (int) Math.sqrt(number);
for (int i = 0; i length; i++) {
for (int j = 0; j length; j++) {
System.out.print(ary[i][j] + "\t");
}
System.out.println();
}
}
public static int[][] show(int number) {
int sqrt = (int) Math.sqrt(number);
int[][] ary = new int[sqrt][sqrt];
int start = 1;
for (int i = 1; i 2 * sqrt; i++) {
if (i = sqrt) {
int startPoint = i - 1;
for (int j = 0; j i; j++) {
if (i % 2 == 1) {
ary[j][startPoint--] = start++;
} else {
ary[startPoint--][j] = start++;
}
}
} else {
int foot = sqrt - 1;
int footEnd = i - sqrt;
for (int k = 0; k 2 * sqrt - i; k++) {
if (i % 2 == 0) {
ary[foot--][footEnd++] = start++;
} else {
ary[footEnd++][foot--] = start++;
}
}
}
}
return ary;
}
}
以下蛇形矩阵用 "二维数组+循环" 打:
#includeiostream
using namespace std;
bool CreateMetrix(int *pMetrix,int n)
{
int i = 0, //数据元素
j = 0, //列号
k = 0;//行号
int iUp = 0,//上边界
iDown = n,//下边界
iLeft = 0,//左边界
iRight = n;//右边界
bool bRight = true,//左右填充方向
bDown = true;//上下填充方向
if (NULL == pMetrix)
{
return false;
}
memset(pMetrix,0,sizeof(int) * n*n);
//开始填充
for (i = 1; i = n*n; i++)
{
//首先向右填充
if (bRight)
{
if (j iRight)//还没有到达右边界
{
*(pMetrix + n * k + j) = i;
j++;
}
else
{
k++;//列号不变,增加行号,因为上面已经填充了对应行的列元素,故先将行号增加
if (k iDown)//还没有到最底端
{
*(pMetrix + n * k + (j - 1)) = i;//此处的j是目前列号加1,因为上面的判断条件所致
}
else
{
iRight--;//右边界列号减1
iDown--;//下边界行号减1
k--;//行号减1
j--;//列号减1
bRight = false;//已经走完一个折线,接下来是向左填充了
}
}
}
if (!bRight)//向左填充
{
if (j iLeft)//如果还没有到达左边界
{
j--;//在前面已经把第k行第j列元素填充了
*(pMetrix + n * k + j) = i;
}
else
{
k--;//第k行元素已经填充
if (k iUp)//还没有到达最顶部
{
*(pMetrix + n * k + j) = i;
}
else
{
iLeft++;//左边界加1
iUp++;//上边界加1
k++;//k已经减过头了
j++;//j也见过头了
i--;//这时候这个数据没有被填充,所以回退一个
bRight = true;//下面又要向右填充了
}
}
}
}
return true;
}
void OutPutMetrix(int *Src, int n)
{
int t = 0;
for (int i = 0; i n; i ++)
{
for (int j = 0; j n; j++)
{
t = *(Src + n*i + j);
cout "\t" t;
}
cout endl;
}
}
int main()
{
int *p = NULL;
int n = 2;
cout "输入矩阵的维度:" endl;
cin n;
if (n 0)
{
p = new int[n*n];
}else
{
cout "输入数字有误!\n本程序不能处理,再见!" endl;
return 0;
}
if (CreateMetrix(p,n))
{
OutPutMetrix(p, n);
}
else
{
cout "处理中出现错误,很抱歉。。。" endl;
}
delete p;
return 1;
}
PS:你们的作业吗?这个题有点难度哦
JAVA编程9. 蛇形矩阵:生成一个按蛇形方式排列自然数1,2,3,4,5,……,N2的 (1
你说的是这样的么?
1 2
3 4
1 2 6
3 5 7
4 8 9
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25
1 2 6 7 15 16
3 5 8 14 17 26
4 9 13 18 25 27
10 12 19 24 28 33
11 20 23 29 32 34
21 22 30 31 35 36
……
java编程: 如何判断 二维数组 是否为蛇形矩阵?
先用下面的方法生个二维数组,再把你的跟他比较就行啦
public class SXjz {
/**
* @param args
*/
public static void main(String[] args) {
int g1[][]=getGrid(10);
for(int i=0;ig1.length;i++){
for(int j=0;jg1.length;j++){
System.out.print(g1[i][j]+" ");
}
System.out.println();
}
}
public static int[][] getGrid(int n)
{
int[][] array = new int[n][n];
int row = 0, col = 0, m = 1;
// 用于控制奇偶组,false表示偶组,true表示奇组
boolean isRow = false;
// i表示当前组的索引,从0开始
for (int i = 0; i (2 * n - 1); i++)
{
row = i;
while (row = ((i n) ? 0 : i - n + 1))
{
// 如果处理的是右下角表格中的数字,行或列最大不能超过n-1
if (row (n - 1))
row = n - 1;
col = i - row;
if (isRow)
array[row][col] = m;
else // 将row变成列,将col变成行
array[col][row] = m;
m++;
row--;
}
// 切换奇偶组
isRow = !isRow;
}
return array;
}
}
java编程蛇形矩阵的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c++蛇形矩阵、java编程蛇形矩阵的信息别忘了在本站进行查找喔。