疑难问题(下)

发布于:2024-12-18 ⋅ 阅读:(87) ⋅ 点赞:(0)

1.找鞍点

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1:

4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9

输出样例1:

2 1

输入样例2:

2
1 7
4 1

输出样例2:

NONE

//思路

先写主函数的思路,再写函数的

能写函数就行函数,思路很清晰!

1输入数组

2遍及每行找最大值,找出最大值的列下标

3验证行最大值是否为列下标的最小值,返回1表示Yes,返回0表示No

Yes则打印,No则继续循环,直到每一行都查完了,found==0,则打印NONE

#include <stdio.h>
int max_of_row(int a[][6], int n, int row)
{
	int max = a[row][0];
	for (int j = 0; j < n; j++)
	{
		if (a[row][j] > max)
		{
			max = a[row][j];
		}
	}
	return max;
}
int testmin(int a[][6], int n, int col, int min)
{
	for (int i = 0; i < n; i++)
	{
		if (a[i][col] < min)
			return 0;//否定
	}
	return 1;//肯定
}
int main()
{
	int a[6][6];
	int n;
	int found = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			scanf("%d", &a[i][j]);
		}
	}
	//遍及每一行来找最大值
	for (int i = 0; i < n; i++)
	{
		int max = max_of_row(a, n, i);
		//找到最大值对应的列标
		for (int j = 0; j < n; j++)
		{
			if (a[i][j] == max)
			{
				//检验最大值是否为一列中的最小值
				if (testmin(a, n, j, max) == 1)
				{
					printf("%d %d", i, j);
					found = 1;
					return 0;
				}
			}
		}
	}
	if (found == 0)
		printf("NONE\n");
	return 0;
}

2.把能被3或5整除的数找出来。

输入格式:

第一行输入一个数n(0<n<=10),表示有n组测试数据。后面的n行输入多组输入数据,每一行都是一个数字m(0<m<=100)。

输出格式:

每组输入数据的输出占一行,结果为从1开始到m的范围内,输出所有能被3或者5整除的整数(包括m)。

输入样例:

在这里给出一组输入。例如:

3
5
10
20

输出样例:

在这里给出相应的输出。提示:每个数据后面都有一个空格。例如:

3 5  
3 5 6 9 10  
3 5 6 9 10 12 15 18 20 

 

 //思路:构建一个n行1列的数组,输入数字,用m来存放放入的数字

                建立一个函数,负责找出并打印可以被3/5整除的所有数字

#include <stdio.h>
void fac(int m)
{
	for (int i = 1; i <= m; i++)
	{
		if (i % 3 == 0 || i % 5 == 0)
		{
			printf("%d ", i);
		}
	}
	printf("\n");
}
int main()
{
	int n, m;
	int a[10][1];
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < 1; j++)
		{
			scanf("%d", &a[i][j]);
			m = a[i][j];
			//得出1-m的所有能被3/5整除的数字并打印
			fac(m);
		}
	}
	return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到