我的想法是從 n*n 一路到 1
比如說 3*3 的矩陣
他的最華麗路徑就是 9 -> 8 -> 7 -> ... -> 2 -> 1 ?
還是我想的太單純了...
我的想法是從 n*n 一路到 1
比如說 3*3 的矩陣
他的最華麗路徑就是 9 -> 8 -> 7 -> ... -> 2 -> 1 ?
還是我想的太單純了...
假如是
1 2 3
4 5 6
7 8 9
很明顯不是9>8>7>6>5>4>3>2>1
應該是9>8>7>4>1這樣吧
我的想法是從 n*n 一路到 1
比如說 3*3 的矩陣
他的最華麗路徑就是 9 -> 8 -> 7 -> ... -> 2 -> 1 ?
還是我想的太單純了...
假如是
1 2 3
4 5 6
7 8 9
很明顯不是9>8>7>6>5>4>3>2>1
應該是9>8>7>4>1這樣吧
我的想法是從 n*n 一路到 1
比如說 3*3 的矩陣
他的最華麗路徑就是 9 -> 8 -> 7 -> ... -> 2 -> 1 ?
還是我想的太單純了...
假如是
1 2 3
4 5 6
7 8 9
很明顯不是9>8>7>6>5>4>3>2>1
應該是9>8>7>4>1這樣吧
我的想法是從 n*n 一路到 1
比如說 3*3 的矩陣
他的最華麗路徑就是 9 -> 8 -> 7 -> ... -> 2 -> 1 ?
還是我想的太單純了...
我也是這麼想...
照這個思路code出來...
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int x;
int y;
int high;
}MOU;
MOU mou[2510];
MOU tmp;
int main () {
int n;
int p, i, j;
int ans;
while (scanf ("%d", &n) != EOF) {
p = 0; //moutain 's top
ans = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &mou[p].high);
mou[p].x = i;
mou[p].y = j;
p++;
}
}
//bubble sort
for (i = 0; i < p - 1; i++) {
for (j = 0; j < p-i-1; j++) {
if (mou[j].high < mou[j+1].high) { //from big to small
tmp = mou[j+1];
mou[j+1] = mou[j];
mou[j] = tmp;
}
}
}
int t;
for (i = 0; i < p - 1; i++) {
t = (abs(mou[i].x - mou[i+1].x)
+
abs(mou[i].y - mou[i+1].y));
ans += (t*t);
}
printf("%d\n", ans);
}
return 0;
}
//=========================================
這顯然不對啊~~
到底要怎麼寫呢?