c++ 二维数组鞍点 为什么我加入了 y=i 之后 就错了呢

#include<iostream>
#include<stdlib.h>
#include<math.h>
#include<ctime> 
#include<string>
using namespace std;
int main()
{ //40、找出一个二维数组中的鞍点,即该元素在该行上最大,在该列上最小。
   int a,b,x,y,z,max,min;
   cout<<"输入二维数组的行数a和列数b"<<endl; 
   cin>>a>>b;
  int arr[a][b];
    for(int k=0;k<a;k++)
    {   for(int h=0;h<b;h++)
    	{
    		cin>>arr[k][h];
		}
	}
	for(int i=0;i<a;i++)
	{ 
	   for(int j=0;j<b;j++)
	   {  
	       if(arr[i][j]>max)
	   	   {
	   	        max=arr[i][j];
			  	x=j;
			  	
		   }
	   	   
	   }
	    for(int p=0,min=arr[i][x],/*y=i*/;p<a;p++)
         {   
		   if(arr[p][x]<min)
    	       {
    	       	   min=arr[p][x];
					 y=p;
			   }
	      }
	if (i == y)
	 {
   cout << arr[i][x] <<" 这是二维数组的鞍点";  //如果该最大值行号没有改变,输出鞍点
   break;
    }
    
 if (i == b && i != y)
  cout<<"这个二维数组没有鞍点"<<endl;             //输出没有鞍点
}
	system("pause");
	return 0;
}

 

是不是因为你y=i前面用了逗号,,,!?

还有我看前面那个数组需要动态分配啊