HDU5706 GirlCat
生活随笔
收集整理的這篇文章主要介紹了
HDU5706 GirlCat
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問題鏈接:HDU5706 GirlCat。
雖然是一個DFS問題,數據表示簡單,用C語言編寫程序。
給二維字符數組一個邊界,程序邏輯就簡潔多了,也許可以達到空間換時間的效果,空間換可閱讀性是做到了。
C語言的二維數組是按行存放的,其每一行的首地址是可以獲得的。有了邊界之后,字符串放的位置需要簡單調整一下。程序中是+1。
程序需要做的具有通用性,這也是值得注意的地方。本題是搜索“girl”和“cat”,如果換兩個單詞程序基本不用改,才能說程序有通用性。
功能能夠封裝則要盡量封裝。C語言程序的功能要封裝到函數里。
使用字符指針相信是一個好主意。
AC程序如下:
/* HDU5706 GirlCat */#include <stdio.h> #include <memory.h>char a[1000+2][1000+2]; char p1[] = "girl"; char p2[] = "cat"; int count, count2;void dfs(int row, int col, char *p) {if(a[row][col] == *p) {if(*(p+1) == '\0')count++;else {p++;dfs(row-1, col, p); // northdfs(row, col+1, p); // eastdfs(row+1, col, p); // southdfs(row, col-1, p); // west}} }int main(void) {int t, n, m, i, j;scanf("%d", &t);while(t--) {// 二維字符數組清零memset(a, 0, sizeof(a));// 讀入數據:二維字符數組,scanf("%d%d", &n, &m);for(i=1; i<=n; i++)scanf("%s", a[i]+1);count = 0;for(i=1; i<=n; i++)for(j=1; j<=m; j++)dfs(i, j, p1); // 匹配girl并且計數count2 = count;count = 0;for(i=1; i<=n; i++)for(j=1; j<=m; j++)dfs(i, j, p2); // 匹配cat并且計數// 輸出結果printf("%d %d\n", count2, count);}return 0; }
轉載于:https://www.cnblogs.com/tigerisland/p/7564661.html
總結
以上是生活随笔為你收集整理的HDU5706 GirlCat的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库设计(6/9):存储过程主体
- 下一篇: WebDriver原理分析