데이터 구조 --- (1) 행렬 의 안장 점 구하 기
8546 단어 데이터 구조
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.