UVa 232 縱橫字謎的答案

2021-09-09 08:28:39 字數 1186 閱讀 2496

這一題的話,輸出的時候,我們要按照3位輸出,不能按照兩位,因為是10*10的網格,所以就是100位,不管有沒有100的起始格,它都是按照3位進行輸出的,從題上的輸出可以看到,不然的話,就會pe。

然後我們對於它的起始網格的處理,我們可以設定乙個對應的網格,然後判斷填數就可以了,然後我們判斷的時候肯定要否定*號,所以就在判斷語句之內加上num [i] [j] =-1的賦值就可以了。然後我們再對於它是否是起始格進行賦值,因為如果是-1的話, 我們也是要輸出這個字母的,對於是零的格仔,我們就不再進行輸出了。

此外加上乙個vis陣列,來判斷是否輸出過就行了,對於總想輸出來說的話,題目中實際上還是按照起始格的順序進行的,所以我們縱向輸出的時候還是按照從上往下橫著掃,但是每掃到乙個起始格,我們就縱向進行判斷輸出。

以及縱向輸出之前,vis清零還是十分關鍵的。

#include

#include

int num[11]

[11];

char puzz[11]

[11];

int vis[11]

[11];

intmain()

if(puzz[i-1]

[j]==

'*'||puzz[i]

[j-1]==

'*')

num[i]

[j]=cnt++;}

}}if(ord!=1)

printf

("\n");

printf

("puzzle #%d:\nacross\n"

,ord++);

for(

int i=

0;i)printf

("\n");

}}}memset

(vis,0,

sizeof

(vis));

printf

("down\n");

for(

int i=

0;i)printf

("\n");

}}}}

return0;

}// for (int i=0;i

// for (int j=0;j

// printf("%3d",num[i][j]);

// }

// printf("\n");

// }

UVA232 縱橫字謎的答案

題目 分析 在輸入的同時用序號對起始格標記,然後按照輸出要求輸出即可。注意 1.行和列的單詞要按照序號從小到大輸出。2.每行的單詞首字母左邊不能有白格,每列的單詞首字母上邊不能有白格。3.本題最後乙個樣例末尾沒有空行。4.輸入的時候每一行最後可能有換行。1 include 2 include 3in...

縱橫字謎的答案

輸入乙個r行c列 1 r,c 10 的網格,黑格用 表示,每個白格都填有乙個字母,如果乙個白格的左邊相鄰的位置或者邊上相鄰的位置沒有白格 可能是黑格,也可能除了網格邊界 則稱這個白格是乙個起始格。首先把所有起始格按照從上到下,從左到右的順序編號為1,2,3 如圖。接下來要輸出所由橫向單詞,這些單詞必...

P58 3 6縱橫字謎的答案

題意 輸入乙個r行c列的網格,黑格用 號表示,每個白格都填有乙個字母。如果乙個白格的左邊相鄰位置或者上邊相鄰位置沒有白格 可能是黑格,也可能出了網格邊界 則稱這個白格是乙個起始格。首先把所有起始格從左到右 從上到下順序編號1,2,3,要求找出所有橫向單詞。這些單詞必須從乙個起始格開始,向右延伸到乙個...