随机打印NXN的拉丁方阵

本文介绍了一个使用C语言实现的矩阵操作程序,该程序能够对矩阵进行特定的行加载处理,并通过随机数生成来初始化矩阵的第一行,确保每列元素唯一。此外,还展示了如何在Windows环境下编译和运行该程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<Windows.h>
#include<stdio.h>

#define N 5
void rowladingmatrix(int a1[N][N] )
{
	int b1[N] = { 0 }, c1[N][N] = { 0 };
	int j,n=0;
	for (int i = 0; i < N; i++)
	{
		j = a1[0][i];
		for (int k = 0; k < N; k++)
		{
			if (i + 1 == a1[0][k])	
				n = k;
			for (int m = 0; m < N; m++)
			{
				b1[m] = a1[0][n++%N];
			}

		}
		for (int p = 1; p < N; p++)
		{
			a1[p][b1[p]-1] = j;
			c1[p][b1[p] - 1] =j;
		}					
	}
	
}

void main()
{

	int a[N][N] = { { 1, 5, 2, 4, 3 } };
	srand((unsigned)time(NULL));
	for (int i = 0; i < N; i++)
	{
	AAA:a[0][i] = rand() % N+1;
		for (int j = 0; j < i; j++)
		{
			if (a[0][i] == a[0][j])
				goto AAA;
		}
	}
	  
	rowladingmatrix(a);
	for (int i = 0; i <N ; i++)
	{
		for (int j = 0; j < N; j++)
		{
			printf("%4d", a[i][j]);
		}
		printf("\n");
	}
	system("pause");
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值