請利用亂數產生一個19x19的矩陣,其內含值為 -1,0,1三個之中取一,也就是矩陣中的元素,不是1,就是0或-1,產生的個數比請依
1:0:-1=1:4:1。最後請寫一函式,用來計算此一矩陣中,1 的最大連線個數(共有4個方向,米字型方向,看4個方向中,那一個方向的連線個數最大,便取其連線之個數)及-1的最大連線個數。
我看到這一題時..傻眼><
謝囉 各位先進
2006-11-12 10:23:15 · 1 個解答 · 發問者 ? 1 in 電腦與網際網路 ➔ 程式設計
#include H.l && j == S-1) H.l = n, H.x = j-n, H.y = i; } else { if (n > H.l) H.l = n, H.x = j-n-1, H.y = i; o = c[i][j], n = 0; } } for (V.d=1, V.l=i=0; i V.l && j == S-1) V.l = n, V.x = i, V.y = j-n; } else { if (n > V.l) V.l = n, V.x = i, V.y = j-n-1; o = c[j][i], n = 0; } } for (U.d=2, U.l=0, i=1; i U.l && k == m) U.l = n, U.x = j, U.y = i; } else { if (n > U.l) U.l = n, U.x = j, U.y = i; n = 0; break; } } } } for (D.d=3, D.l=i=0; i
2006-11-17 02:47:43 補充:
intmain()
{inti, j, k, l;
structMa[2];
char*d[4]={"Horizontal", "Vertical", "Right-Up", "Right-down"};
srand(l=time(0));
for (i=0; i
for (j=0; j
k= rand() % (1+4+1),
c[i][j]=k?k==(1+4+1-1)?1:0:-1;
2006-11-17 02:50:24 補充:
system("CLS");
prt();
a[0]= lng(-1);
a[1]= lng( 1);
k= a[0].l < a[1].l;
2006-11-17 02:52:19 補充:
switch (a[k].d)
{case 0:for (i=0; i
case 1:for (i=0; i
case 2:for (i=0; i
2006-11-17 02:53:48 補充:
case 3:for (i=0; i
}
printf("\nLongest happened at (%d, %d) on team % d for %d in direction %s.\n",
a[k].x, a[k].y, a[k].t, a[k].l, d[a[k].d]);
prt();
system("pause");
return 0;
}
2006-11-17 02:58:02 補充:
程式寫得不好,結構改了好幾次;
本來要一次算出一隊(1, -1) 最長的東東,後來改成一次算一隊。
所以,有些東東看起來怪怪的。
本來是用 Turbo C 寫的,可以控制游標,所以想列出兩隊中,橫、直、上下斜的最長線各在哪,其將這最長的以'L'標示出來。
後來換去 MS-VC,就去掉這功能了!
這是為啥有個
char C[] = "* +=|/\\Ll",
的原因。
沒時間把它改成完全一致了。
不過,能run 出正確的結果就是了。
小小測試了一下,不知有沒有 bug,我還有自己的功課要趕呢!
您自己再試試!!
2006-11-16 21:46:12 · answer #1 · answered by ? 7 · 0⤊ 0⤋