acm小学弟

来源:互联网 发布:轩辕剑美人进阶数据 编辑:程序博客网 时间:2024/05/01 08:33

acm小学弟

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 925   Accepted Submission(s) : 134

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

今天小学弟又训练完了,但是小学弟又不想看球赛,于是小学弟看马赛了。他发现马鞍是一个奇怪的东西。于是小学弟根据马鞍定义了一种马鞍数:在一个二位矩阵中,马鞍数在当前行是最小的,在当前列是最大的,并且这个数在当前行和列都是独一无二的。小学弟现在马上打开电脑写出了一个程序求出了矩阵里面马鞍数的数量。那么,你能求出来吗?这是一道非常简单的题目。

Input

输入包含多组,每一组输入一个n(1<=n<=1000),接下来n行,每一行有n个数a1,a2,a3……,an(0<=ai<=10000000000)。

Output

输出马鞍数的数量。

Sample Input

51 2 3 4 50 0 0 0 40 0 0 0 30 0 0 0 20 0 0 0 1

Sample Output

1

#include <iostream>using namespace std;int sum=0;int flag=0;int n;long long map[1005][1005];void find(int a,int b,int ans){int k=0;for(int i=0;i<n;i++){if(map[i][b]==ans){k++;}}for(int j=0;j<n;j++){if(map[a][j]==ans)k++;}if(k>2)return;long long max1=0;for(int i=0;i<n;i++){if(map[i][b]>max1)max1=map[i][b];}if(max1==ans)flag=1;}int main(){while(cin>>n){for(int i=0;i<n;i++){for(int j=0;j<n;j++){cin>>map[i][j];val[i][j]=1; }}long long max=0xFFFFFFFF;int a,b;sum=0;for(int i=0;i<n;i++){flag=0;max=0xFFFFFFFF;for(int j=0;j<n;j++){if(map[i][j]<max){max=map[i][j];    b=j;    a=i;}}find(a,b,max);if(flag==1){    sum++;}}cout<<sum<<endl;} }


0 0
原创粉丝点击