5.1 謹略方怏
云嫗初府議方怏嚥鴻吶燕辛篇葎?來燕議容鴻?凪蒙泣頁方象圷殆挽隼頁匯倖燕。云嫗網胎謹略方怏議貸辞潤更才贋刈潤更、蒙歩裳專、裳專議儿抹贋刈、鴻吶燕議貸辞潤更才贋刈潤更吉。
方怏頁厘断載母呂議匯嶽方象潤更?万辛參心恬?來燕議容鴻。方怏恬葎匯嶽方象潤更凪蒙泣頁潤更嶄議圷殆云附辛參頁醤嗤蝶嶽潤更議方象?徽奉噐揖匯方象窃侏?曳泌?匯略方怏辛參心恬匯倖?來燕?屈略方怏辛參心恬“方象圷殆頁匯略方怏”議匯略方怏?眉略方怏辛參心恬“方象圷殆頁屈略方怏”議匯略方怏?卆緩窃容。夕5.1 頁匯倖m 佩n双議屈略方怏。
方怏頁匯倖醤嗤耕協鯉塀才方楚議方象嗤會鹿?耽匯倖方象圷殆嗤率匯議匯怏和炎栖炎紛?咀緩?壓方怏貧音嬬恂峨秘、評茅方象圷殆議荷恬。宥械壓光嶽互雫囂冱嶄方怏匯稀瓜協吶?耽匯略議寄弌式貧和順脅音嬬個延。壓方怏嶄宥械恂和中曾嶽荷恬?
(1) 函峙荷恬?公協匯怏和炎?響凪斤哘議方象圷殆。
(2) 験峙荷恬?公協匯怏和炎?贋刈賜俐個嚥凪屢斤哘議方象圷殆。
厘断彭嶷冩梢屈略才眉略方怏?咀葎万断議哘喘頁鴻刑議?喩凪頁屈略方怏。
孖壓栖網胎方怏壓柴麻字嶄議贋刈燕幣。宥械?方怏壓坪贋瓜啌嵆葎?楚?軸喘?楚恬葎方怏議匯嶽贋刈潤更?宸頁咀葎坪贋議仇峽腎寂頁匯略議?方怏議佩双耕協朔?宥狛匯倖啌嵆痕方?夸辛功象方怏圷殆議和炎誼欺万議贋刈仇峽。
斤噐匯略方怏梓和炎乏會蛍塘軸辛。
斤謹略方怏蛍塘扮?勣委万議圷殆啌嵆贋刈壓匯略贋刈匂嶄?匯違嗤曾嶽贋刈圭塀?
匯頁參佩葎麼會?賜枠佩朔双?議乏會贋慧?泌BASIC、PASCAL、COBOL、C 吉殻會譜柴囂冱嶄喘議頁參佩葎麼議乏會蛍塘?軸匯佩蛍塘頼阻俊彭蛍塘和匯佩。
総匯嶽頁參双葎麼會?枠双朔佩?議乏會贋慧?泌FORTRAN 囂冱嶄?喘議頁參双葎麼會議蛍塘乏會?軸匯双匯双仇蛍塘。
參佩葎麼會議蛍塘号舵頁?恷嘔円議和炎枠延晒?軸恷嘔和炎貫弌欺寄?儉桟匯演朔?嘔円及屈倖和炎壅延?…?貫嘔?恣?恷朔頁恣和炎。參双葎麼會蛍塘議号舵如挫屢郡?恷恣円議和炎枠延晒?軸恷恣和炎貫弌欺寄?儉桟匯演朔?恣円及屈倖和炎壅延?…?貫恣?嘔?恷朔頁嘔和炎。箭泌匯倖2×3 屈略方怏?貸辞潤更辛參喘夕5.2 燕幣。參佩葎麼會議坪贋啌嵆泌夕5.3
?a?侭幣。蛍塘乏會葎?a11 ?a12 ?a13 ?a21 ?a22 ?a23 ; 參双葎麼會議蛍塘乏會葎?a11 ?a21 ?a12 ?a22 ?a13 ?a23 ; 万議坪贋啌嵆泌夕5.3?b?侭幣。
譜嗤m×n 屈略方怏Amn?和中厘断心梓圷殆議和炎箔凪仇峽議柴麻?
參“參佩葎麼會”議蛍塘葎箭?譜方怏議児峽葎LOC(a11)?耽倖方怏圷殆媼象l 倖仇峽汽圷?椎担aij 議麗尖仇峽辛喘匯?來儖峽痕方柴麻?
壓C 囂冱嶄?方怏嶄耽匯略議和順協吶葎0?夸?
箭5?1 飛裳專Am×n 嶄贋壓蝶倖圷殆aij 諾怎?aij 頁及i 佩嶄恷弌峙拝頁及j 双嶄議恷寄峙?夸各乎圷殆葎裳專A 議匯倖旭泣。編園亟匯倖麻隈?孀竃A 嶄議侭嗤旭泣。
児云房??壓裳專A 嶄箔竃耽匯佩議恷弌峙圷殆?隼朔登僅乎圷殆万頁倦頁万侭壓双嶄議恷寄峙?頁夸嬉咫竃?俊彭侃尖和匯佩。裳專A 喘匯倖屈略方怏燕幣。麻隈泌和?
void saddle (int A[ ][ ],int m, int n)
/*m,n 頁裳專A 議佩才双*/
{ int i,j,min;
for (i=0;i<m;i++) /*梓佩侃尖*/
{ min=A[i][0]
for (j=1; j<n; j++)
if (A[i][j]<min ) min=A[I][j]; /*孀及I 佩恷弌峙*/
for (j=0; j<n; j++) /*殊霞乎佩嶄議耽匯倖恷弌峙頁倦頁旭泣*/
if (A[I][j]==min )
{ k=j; p=0;
while (p<m && A[p][j]<min)
p++;
if ( p>=m) printf (?%d,%d,%d\n?, i ,k,min);
} /* if */
} /*for i*/
}
麻隈議扮寂來嬬葎O(m*(n+m*n))。
5.1.1 方怏議貸辞潤更
方怏頁厘断載母呂議匯嶽方象潤更?万辛參心恬?來燕議容鴻。方怏恬葎匯嶽方象潤更凪蒙泣頁潤更嶄議圷殆云附辛參頁醤嗤蝶嶽潤更議方象?徽奉噐揖匯方象窃侏?曳泌?匯略方怏辛參心恬匯倖?來燕?屈略方怏辛參心恬“方象圷殆頁匯略方怏”議匯略方怏?眉略方怏辛參心恬“方象圷殆頁屈略方怏”議匯略方怏?卆緩窃容。夕5.1 頁匯倖m 佩n双議屈略方怏。
方怏頁匯倖醤嗤耕協鯉塀才方楚議方象嗤會鹿?耽匯倖方象圷殆嗤率匯議匯怏和炎栖炎紛?咀緩?壓方怏貧音嬬恂峨秘、評茅方象圷殆議荷恬。宥械壓光嶽互雫囂冱嶄方怏匯稀瓜協吶?耽匯略議寄弌式貧和順脅音嬬個延。壓方怏嶄宥械恂和中曾嶽荷恬?
(1) 函峙荷恬?公協匯怏和炎?響凪斤哘議方象圷殆。
(2) 験峙荷恬?公協匯怏和炎?贋刈賜俐個嚥凪屢斤哘議方象圷殆。
厘断彭嶷冩梢屈略才眉略方怏?咀葎万断議哘喘頁鴻刑議?喩凪頁屈略方怏。
5.1.2 方怏議坪贋啌嵆
孖壓栖網胎方怏壓柴麻字嶄議贋刈燕幣。宥械?方怏壓坪贋瓜啌嵆葎?楚?軸喘?楚恬葎方怏議匯嶽贋刈潤更?宸頁咀葎坪贋議仇峽腎寂頁匯略議?方怏議佩双耕協朔?宥狛匯倖啌嵆痕方?夸辛功象方怏圷殆議和炎誼欺万議贋刈仇峽。
斤噐匯略方怏梓和炎乏會蛍塘軸辛。
斤謹略方怏蛍塘扮?勣委万議圷殆啌嵆贋刈壓匯略贋刈匂嶄?匯違嗤曾嶽贋刈圭塀?
匯頁參佩葎麼會?賜枠佩朔双?議乏會贋慧?泌BASIC、PASCAL、COBOL、C 吉殻會譜柴囂冱嶄喘議頁參佩葎麼議乏會蛍塘?軸匯佩蛍塘頼阻俊彭蛍塘和匯佩。
総匯嶽頁參双葎麼會?枠双朔佩?議乏會贋慧?泌FORTRAN 囂冱嶄?喘議頁參双葎麼會議蛍塘乏會?軸匯双匯双仇蛍塘。
參佩葎麼會議蛍塘号舵頁?恷嘔円議和炎枠延晒?軸恷嘔和炎貫弌欺寄?儉桟匯演朔?嘔円及屈倖和炎壅延?…?貫嘔?恣?恷朔頁恣和炎。參双葎麼會蛍塘議号舵如挫屢郡?恷恣円議和炎枠延晒?軸恷恣和炎貫弌欺寄?儉桟匯演朔?恣円及屈倖和炎壅延?…?貫恣?嘔?恷朔頁嘔和炎。箭泌匯倖2×3 屈略方怏?貸辞潤更辛參喘夕5.2 燕幣。參佩葎麼會議坪贋啌嵆泌夕5.3
?a?侭幣。蛍塘乏會葎?a11 ?a12 ?a13 ?a21 ?a22 ?a23 ; 參双葎麼會議蛍塘乏會葎?a11 ?a21 ?a12 ?a22 ?a13 ?a23 ; 万議坪贋啌嵆泌夕5.3?b?侭幣。
譜嗤m×n 屈略方怏Amn?和中厘断心梓圷殆議和炎箔凪仇峽議柴麻?
參“參佩葎麼會”議蛍塘葎箭?譜方怏議児峽葎LOC(a11)?耽倖方怏圷殆媼象l 倖仇峽汽圷?椎担aij 議麗尖仇峽辛喘匯?來儖峽痕方柴麻?
LOC(aij) = LOC(a11) + ( (i-1)*n + j-1 ) * l
宸頁咀葎方怏圷殆aij 議念中嗤i-1 佩?耽匯佩議圷殆倖方葎n?壓及i 佩嶄万議念中珊嗤j-1 倖方怏圷殆。壓C 囂冱嶄?方怏嶄耽匯略議和順協吶葎0?夸?
LOC(aij) = LOC(a00) + ( i*n + j ) * l
容鴻欺匯違議屈略方怏?A[c1..d1] [c2..d2]?夸aij 議麗尖仇峽柴麻痕方葎?
LOC(aij)=LOC(a c1 c2)+( (i- c1) *( d2 - c2 + 1)+ (j- c2) )*l
揖尖斤噐眉略方怏Amnp?軸m×n×p 方怏?斤噐方怏圷殆aijk 凪麗尖仇峽葎?
LOC(aijk)=LOC(a111)+( ( i-1) *n*p+ (j-1)*p +k-1)*l
容鴻欺匯違議眉略方怏?A[c1..d1] [c2..d2] [c3..d3]?夸aijk 議麗尖仇峽葎?
LOC(i,j)=LOC(a c1 c2 c3)+( (i- c1) *( d2 - c2 + 1)* (d3- c3 + 1)+ (j- c2) *( d3- c3 + 1)+(k- c3))*l
眉略方怏議貸辞潤更才參佩葎麼會議蛍塘幣吭夕泌夕5.4 侭幣。
箭5?1 飛裳專Am×n 嶄贋壓蝶倖圷殆aij 諾怎?aij 頁及i 佩嶄恷弌峙拝頁及j 双嶄議恷寄峙?夸各乎圷殆葎裳專A 議匯倖旭泣。編園亟匯倖麻隈?孀竃A 嶄議侭嗤旭泣。
児云房??壓裳專A 嶄箔竃耽匯佩議恷弌峙圷殆?隼朔登僅乎圷殆万頁倦頁万侭壓双嶄議恷寄峙?頁夸嬉咫竃?俊彭侃尖和匯佩。裳專A 喘匯倖屈略方怏燕幣。麻隈泌和?
void saddle (int A[ ][ ],int m, int n)
/*m,n 頁裳專A 議佩才双*/
{ int i,j,min;
for (i=0;i<m;i++) /*梓佩侃尖*/
{ min=A[i][0]
for (j=1; j<n; j++)
if (A[i][j]<min ) min=A[I][j]; /*孀及I 佩恷弌峙*/
for (j=0; j<n; j++) /*殊霞乎佩嶄議耽匯倖恷弌峙頁倦頁旭泣*/
if (A[I][j]==min )
{ k=j; p=0;
while (p<m && A[p][j]<min)
p++;
if ( p>=m) printf (?%d,%d,%d\n?, i ,k,min);
} /* if */
} /*for i*/
}
麻隈議扮寂來嬬葎O(m*(n+m*n))。