Một phần tử được gọi là Yên Ngựa khi và chỉ khi nó lớn nhất trên dòng và nhỏ nhất trên cột hoặc lớn nhất trên cột và nhỏ nhất trên dòng
Lưu ý: Code này mình viết trên DEV C++ , dữ liệu đọc từ file "SADDLE.INP" và xuất ra file "SADDLE.OUT". Nếu bạn viết trên Visual studio thì bạn thay đổi lại thư viện và cách nhập xuất là Ok. Quan trọng là thuật toán xử lý thôi
Code:
#include <cstdlib>
#include <iostream>
#include <fstream>
#define fni "SADDLE.INP"
#define fno "SADDLE.OUT"
using namespace std;
int a[100][100],b[100][2],c[2][100] ,n,m,d=0,vmax,vmin;
void doc()
{
ifstream
ifi(fni);
ifi>>n;
ifi>>m;
for (int
i=0;i<n;i++)
{ vmax=vmin=0;
for (int
j=0;j<m;j++)
{
ifi>>a[i][j];
if(a[i][j]>a[i][vmax])
vmax=j;
if(a[i][j]<a[i][vmin])
vmin=j;
}
b[i][0]=a[i][vmin];
b[i][1]=a[i][vmax];
}
ifi.close();
}
void maxmincot()
{
for (int
j=0;j<m;j++)
{ vmax=vmin=0;
for (int
i=0;i<n;i++)
{
if(a[i][j]>a[vmax][j])
vmax=i;
if(a[i][j]<a[vmin][j])
vmin=i;
}
c[0][j]=a[vmin][j];
c[1][j]=a[vmax][j];
}
}
void xuat()
{
maxmincot();
ofstream
ofo(fno);
for(int
i=0;i<n;i++)
for(int
j=0;j<m;j++)
if((a[i][j]==b[i][0] && b[i][0]==c[1][j]) ||
(a[i][j]==b[i][1] && b[i][1]==c[0][j]))
d++;
ofo<<d;
ofo.close();
}
int main(int argc, char *argv[])
{
doc();
xuat();
return EXIT_SUCCESS;
}
0 comments:
Post a Comment