|
- //二維數(shù)組中的鞍點,行中最大,列中最小,也可能沒有鞍點
- #include<stdio.h>
- void main()
- {
- //首先輸入一個二維數(shù)組
- //這個二維數(shù)組是任意階數(shù)的
- int m;//數(shù)組的階數(shù)
- int a[20][20];
- int i,j;//數(shù)組的坐標(biāo)
- int t;//每一行當(dāng)前最大值存放變量
- int p,q;//存放最大值坐標(biāo)的變量
- int l=0;//累計列中比當(dāng)前值大的數(shù)的數(shù)量
- int k;//為了防止最外層的i被破壞,引進一個新的變量
- int n=0;//累計所有鞍點的個數(shù)
- printf("please input order and then input elements:\n");
- scanf("%d",&m);
- for(i=0;i<m-1;i++)
- {
- for(j=0;j<=m-1;j++)
- {
- scanf("%d",&a[i][j]);
- }
- }
- //現(xiàn)在材料有了,該處理數(shù)據(jù)了
- //我想先從第一行開始,找到最大的,再確定是否是該列最小的,如果是,階數(shù)循環(huán),輸出該數(shù)及該數(shù)坐標(biāo)
- //如果不是,繼續(xù)從下一行找
- for(i=0;i<=m-1;i++)
- {
- t=a[i][0];
- for(j=0;j<=m-1;j++)
- {
- if(a[i][j]>=t)
- {
- t=a[i][j];
- p=i;
- q=j;//現(xiàn)在t里面存放當(dāng)前行里面的最大值,pq中存放著他的坐標(biāo)
- }
- }
- for(k=0;k<=m-1;k++)//在當(dāng)前列中尋找是否有比他大的,++not--
- {
- if(a[k][q]>=t)
- {
- l+=1;
- }
- }
-
- if(l==m-1)
- { n=n+1;
- printf("%3d,%3d\n",p,q);}
- l=0;//變量l清零,為下一次做準(zhǔn)備
-
- }
- if(n>0)
- printf(" exists a saddle point\n");
- else
- printf("does not exist a saddle point\n");
- }
復(fù)制代碼
|
|