1 条题解

  • 0
    @ 2025-4-7 21:28:47

    C :

    #include<stdio.h>
    int main(){
    	int n,m,tag;
    	int i,j,k,maxi;
    	int a[50][50];
    	scanf("%d%d",&n,&m);
    	for(i=0;i<n;i++)
    		for(j=0;j<m;j++)
    			scanf("%d",&a[i][j]);
    
    	for(i=0;i<n;i++){
    		tag=1;
    		maxi=0;
    		for(k=0;k<m;k++){
    			
    			if(a[i][maxi]<a[i][k])
    				maxi=k;
    		}
    		for(j=0;j<n;j++){
    			if(a[i][maxi]>a[j][maxi])
    				tag=0;
    		}
    		if (tag==1)
    			printf("%d %d %d\n",a[i][maxi],i,maxi);
    	}
    			
    			return 0;
    }
    

    C++ :

    #include <stdio.h>
    int main() {
    	int dat[50][50];
    	int n, m, i, j, k, saddle, saddleCnt = 0;
    	scanf("%d%d", &n, &m);
    	for (i = 0;i < n;i++) {
    		for (j = 0;j < m;j++) {
    			scanf("%d", &dat[i][j]);
    		}
    	}
    	for (i = 0;i < n;i++) {
    		for (j = 0;j < m;j++) {
    			saddle = 1;
    			for (k = 0;k < m && saddle == 1;k++)
    				if (dat[i][k] > dat[i][j])
    					saddle = 0;
    			for (k = 0;k < n && saddle == 1;k++)
    				if (dat[k][j] < dat[i][j])
    					saddle = 0;
    			if (saddle == 1) {
    				saddleCnt++;
    				printf("%d %d %d\n", dat[i][j], i, j);
    			}
    		}
    	}
    	if (saddleCnt == 0)
    		puts("NO");
    	return 0;
    }
    
    

    Pascal :

    
    const Num=100;
    var
      a:array[0..Num,0..Num] of longint;
      b:array[1..Num,0..Num] of longint; //记录列最小
      n,m,i,j,min,max,t,count:longint;
    
    begin
      readln(n,m);
      for i:=1 to n do
        for j:=1 to m do begin
          read(a[i,j]); b[i,j]:=0;
        end;
      for j:=1 to m do begin
        min:=maxlongint;
        for i:=1 to n do
          if(a[i,j]<min) then begin
            min:=a[i,j];
            t:=i; //记录行号
          end;
        b[t,j]:=min;  
      end;
      count:=0;
      for i:=1 to n do begin
        max:=-maxlongint;
        for j:=1 to m do
          if(a[i,j]>max) then begin
            max:=a[i,j];
            t:=j; //记录列号
          end;
        if( a[i,t]=b[i,t] ) then begin //找到鞍点
          writeln(a[i,t],' ',i-1,' ',t-1); //对应C习惯,从0行开始
          inc(count);
        end;
      end;
      if(count=0) then writeln('NO');
    end.
    
    
    
    
    
    
    

    Java :

    
    
    import java.util.Scanner;
    
    public class Main {
       private static Scanner s = new Scanner(System.in) ;
       
       public static void main(String[] args) {
    	  int n = s.nextInt() ;
    	  int m = s.nextInt() ;
    	  int a[][] = new int[n][m] ;
    	  
    	  for (int i = 0; i < a.length; i++) {
    		for (int j = 0; j < a[i].length; j++) {
    			a[i][j] = s.nextInt() ;
    		}
    	  }
    	  int max = 0 ;
    	  int x = 0 ;
    	  int y = 0 ;
    	  int sum = 0 ;
    	  for (int i = 0; i < a.length; i++) {
    			for (int j = 0; j < a[i].length; j++) {
    				if(a[i][j]>max){
    					max = a[i][j] ;
    					x = i ;
    					y = j ;
    				}
    			}
    			for (int j = 0; j < a.length; j++) {
    				if(a[j][y]>max){
    					sum++ ;
    				}
    			}
    			
    			if(sum>0){
    				System.out.println(a[x][y]+" "+x+" "+y);
    			}
    			x= 0;
    			y =0 ;
    			sum = 0 ;
    		  }
       } 
    }
    
    
    • 1

    信息

    ID
    1302
    时间
    1000ms
    内存
    32MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者