作者alvinyuan ()
看板b99902HW
標題[計程] city road
時間Mon Oct 18 21:57:49 2010
不好意思來問一下 我已經改到覺得沒地方可以改了呀
不知道為什麼才2分
我分別針對是不是邊界來檢查
邊界又分好幾種case
再針對鄰居總和是4 3 2 1的情況做加總
不知道是我眼殘還是真的有想錯了 可以拜託幫我看一下嗎...
void intersection(int map[100][100], int result[4]);
void intersection(int map[100][100], int result[4])
{
int i, j;
for(i = 0; i < 4; i++)
result[i] = 0;
for(i = 1; i < 99; i++){
for(j = 1; j < 99; j++){
if(map[i][j] == 1 && (map[i - 1][j] + map[i + 1][j] + map[i][j -
1] + map[i][j + 1]) == 4)
result[0]++;
if(map[i][j] == 1 && (map[i - 1][j] + map[i + 1][j] + map[i][j -
1] + map[i][j + 1]) == 3)
result[1]++;
if(map[i][j] == 1 && (map[i - 1][j] + map[i + 1][j] + map[i][j -
1] + map[i][j + 1]) == 2)
result[2]++;
if(map[i][j] == 1 && (map[i - 1][j] + map[i + 1][j] + map[i][j -
1] + map[i][j + 1]) == 1)
result[3]++;
}
}
for(j = 1; j < 99; j++){
if(map[0][j] == 1 && (map[1][j] + map[0][j - 1] + map[0][j + 1]) ==
3)
result[1]++;
if(map[0][j] == 1 && (map[1][j] + map[0][j - 1] + map[0][j + 1]) ==
2)
result[2]++;
if(map[0][j] == 1 && (map[1][j] + map[0][j - 1] + map[0][j + 1]) ==
1)
result[3]++;
}
for(j = 1; j < 99; j++){
if(map[99][j] == 1 && (map[98][j] + map[99][j - 1] + map[99][j + 1])
== 3)
result[1]++;
if(map[99][j] == 1 && (map[98][j] + map[99][j - 1] + map[99][j + 1])
== 2)
result[2]++;
if(map[99][j] == 1 && (map[98][j] + map[99][j - 1] + map[99][j + 1])
== 1)
result[3]++;
}
for(i = 1; i < 99; i++){
if(map[i][0] == 1 && (map[i][1] + map[i + 1][0] + map[i - 1][0]) ==
3)
result[1]++;
if(map[i][0] == 1 && (map[i][1] + map[i + 1][0] + map[i - 1][0]) ==
2)
result[2]++;
if(map[i][0] == 1 && (map[i][1] + map[i + 1][0] + map[i - 1][0]) ==
1)
result[3]++;
}
for(i = 1; i < 99; i++){
if(map[i][99] == 1 && (map[i][98] + map[i + 1][99] + map[i - 1][99])
== 3)
result[1]++;
if(map[i][99] == 1 && (map[i][98] + map[i + 1][99] + map[i - 1][99])
== 2)
result[2]++;
if(map[i][99] == 1 && (map[i][98] + map[i + 1][99] + map[i - 1][99])
== 1)
result[3]++;
}
if(map[0][0] == 1 && (map[0][1] + map[1][0]) == 2)
result[2]++;
if(map[0][0] == 1 && (map[0][1] + map[1][0]) == 1)
result[3]++;
if(map[0][99] == 1 && (map[0][98] + map[1][99]) == 2)
result[2]++;
if(map[0][99] == 1 && (map[0][98] + map[1][99]) == 1)
result[3]++;
if(map[99][0] == 1 && (map[98][0] + map[99][1]) == 2)
result[2]++;
if(map[99][0] == 1 && (map[98][0] + map[99][1]) == 1)
result[3]++;
if(map[99][99] == 1 && (map[98][99] + map[99][98]) == 2)
result[2]++;
if(map[99][99] == 1 && (map[98][99] + map[99][98]) == 1)
result[3]++;
return;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.7.59
1F:推 m80126colin:四個鄰居如果是-3 4 2 -1呢?? 10/18 22:04
2F:→ alvinyuan:咦 根據題目的定義 鄰居不是只有可能出現0和1嗎 10/18 22:12
3F:→ alvinyuan:對吼 好像沒有說非1就是0= = 10/18 22:14
4F:推 math120908:話說題目沒說 可是其實應該非0則1的樣子XD 10/18 23:00
5F:→ alvinyuan:是唷 剛剛還在用力想不限定1和0該怎麼寫 10/18 23:02
6F:→ alvinyuan:那這樣我是錯在哪呀= = 10/18 23:02
7F:推 math120908:你對於result[2]的狀況都有點錯 因為像 10/18 23:04
8F:推 math120908: 0 10/18 23:04
9F:→ math120908:111 10/18 23:04
10F:→ math120908: 0 這種狀況會不是result[2]可是你會算到~ 10/18 23:05
11F:→ alvinyuan:呼 10分了 真的很感謝唷 10/18 23:54