標題:
npsc2010_B薑餅部落的危機
[打印本頁]
作者:
葉桔良
時間:
2022-11-4 00:53
標題:
npsc2010_B薑餅部落的危機
本帖最後由 葉桔良 於 2022-11-4 21:08 編輯
薑餅部落的危機
執行時間限制: 10 秒
薑餅部落位於遠得要命王國北方三千公里外,住民僅限於薑餅人一族。該部落散落於海上的島嶼群,由於終年冰雪籠罩因此海面常保持著結冰狀態。
以往薑餅人們和平地生活於此,但近年來溫室效應影響擴大造成極地暖化,使得薑餅人的性命受到威脅。(它們碰到水會立刻融化!!)有鑑於此,薑餅長老下令動員全部人力在所有陸地與海鄰接處築起高牆,以保護其家園不被海水侵蝕。不過薑餅人們的智慧並不高,無法計算需要的圍牆長度,請你寫一個程式幫助它們計算。
輸入檔說明
測資包含多組測試資料,第一列有一個整數 T 表示接下來有幾組測試資料。每組測試資料表示一張地圖,其第一列有兩個整數 N, M,代表該地圖的長與寬,地圖由 0 和 1 構成, 0 表示海面、 1 表示陸地,地圖外圍皆視同海面 (1 ≤ N, M ≤ 500)。
輸出檔說明
對每筆測試資料輸出隔絕海陸所需的圍牆長度。
範例輸入
2
4 5
00000
01010
01110
00000
4 5
00000
01110
01010
01100
範例輸出
12
16
作者:
葉桔良
時間:
2022-11-4 00:53
#include <iostream>
using namespace std;
char grid[505][505];
int main() {
int T, N, M;
string s;
cin >> T;
while (T--){
cin >> N >> M;
for (int j = 0; j <= M+1; j++){
grid[0][j] = '0'; //地圖外圍皆視同海面
}
for (int i = 1; i <= N; i++){
cin >> s;
grid[i][0] = '0'; //地圖外圍皆視同海面
for (int j = 1; j <= M; j++){
grid[i][j] = s[j-1];
}
grid[i][M+1] = '0'; //地圖外圍皆視同海面
}
for (int j = 0; j <= M+1; j++){
grid[N+1][j] = '0'; //地圖外圍皆視同海面
}
int ans = 0;
for (int i = 0; i <= N; i++){
for (int j = 0; j <= M; j++){
if (grid[i][j] != grid[i][j+1]){
ans++;
}
if (grid[i][j] != grid[i+1][j]){
ans++;
}
}
}
cout << ans << "\n";
}
}
複製代碼
作者:
若晴
時間:
2022-11-4 21:06
#include <iostream>
#include<cstdlib>
using namespace std;
int main()
{
int T;
cin>>T;
int N, M;
cin>>N>>M;
int wall = 0;
char map[N][M];
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
cin>>map[i][j];
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(map[i][j]=='1')
{
wall+=8;
}
}
}
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
if(map[i][j]=='1')
{
if(map[i][j+1]=='1')
{
wall-=1;
}
if(map[i+1][j]=='1')
{
wall-=1;
}
if(map[i+1][j+1]=='1')
{
wall-=1;
}
if(map[i][j-1]=='1')
{
wall-=1;
}
if(map[i-1][j]=='1')
{
wall-=1;
}
if(map[i-1][j-1]=='1')
{
wall-=1;
}
if(map[i-1][j+1]=='1')
{
wall-=1;
}
if(map[i+1][j-1]=='1')
{
wall-=1;
}
}
}
}
cout<<wall;
system("pause");
return 0;
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/)
Powered by Discuz! 7.2