데이터 구조 --- (1) 행렬 의 안장 점 구하 기

8546 단어 데이터 구조
1. 실험 목적: 2 차원 배열 의 계산 과 자주 사용 하 는 문자 함수 의 사용 을 파악 한다.
2. 실험 문제: 안장 을 찾 는 알고리즘 을 설계 합 니 다.2 차원 배열 의 안장 점 은 이 위치 에 있 는 요 소 를 말 하 는데 줄 에서 가장 크 고 열 에서 가장 작다.2 차원 배열 도 안장 이 없 을 수 있다.
3. 문제 풀이 방향: 2 차원 배열 로 요 소 를 저장 할 수 있 습 니 다. 안장 의 정의 에 따라 점 을 찾 으 면 이 점 의 위치 에 있 는 요 소 는 이 줄 에서 가장 크 고 이 열 에서 가장 작 으 면 됩 니 다.먼저 i 줄 에서 가장 큰 요 소 를 찾 아 있 는 열 번호 c, 최대 요소 의 값 rmax 를 기록 할 수 있 습 니 다.그 다음 에 c 열 에서 rmax 와 이 열 에 있 는 다른 요 소 를 비교 하여 이 열 에 있 는 rmax 가 가장 작은 요소 인지 판단 합 니 다. 한 요소 가 그것 보다 작 으 면 rmax 가 이 열 에서 가장 작은 요소 가 아니 라 는 것 을 설명 합 니 다.rmax 가 c 열 에서 가장 작은 것 이 라면 안장 점 을 찾 아 이 안장 점 의 값 을 인쇄 한 다음 에 모든 줄 을 찾 을 때 까지 상기 절 차 를 반복 합 니 다.
4. 프로그램 구현:
/*      */
#include "stdio.h"
#define m 3
#define n 3
int find(int R[m][n])	/*      */
	{
	int i,j,flag,rmax,k,c;
	i=0;
	flag=0;
	while((i<m) && (!flag))
		{
		rmax=R[i][0];
		c=0;
		for(j=1;j<n;j++)
		if(rmax<R[i][j])	/*        */
		{
		rmax=R[i][j];
		c=j;
		}
	flag=1;
	k=0;
	while(k<m && flag)	/*               */
		{
		if(k!=i)
			if(R[k][c]<=rmax)
				flag=0;
		k++;
		}
		if(flag)	/*  flag 1,            */
			printf("   R[%d][%d]:%d
"
,i,c,R[i][c]); i++; } if(!flag) printf(" !
"
); } main() { int K[m][n],i,j; for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&K[i][j]); find(K); /* */ }

5. 테스트 데이터: 디자인 테스트 사례, 예 를 들 어 A [2] [3] = (1, 2, 3, 4, 5, 6, 7, 8, 9);테스트 결과: 3

좋은 웹페이지 즐겨찾기