HDU5706 GirlCat
生活随笔
收集整理的這篇文章主要介紹了
HDU5706 GirlCat
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問題鏈接:HDU5706 GirlCat。
雖然是一個(gè)DFS問題,數(shù)據(jù)表示簡(jiǎn)單,用C語言編寫程序。
給二維字符數(shù)組一個(gè)邊界,程序邏輯就簡(jiǎn)潔多了,也許可以達(dá)到空間換時(shí)間的效果,空間換可閱讀性是做到了。
C語言的二維數(shù)組是按行存放的,其每一行的首地址是可以獲得的。有了邊界之后,字符串放的位置需要簡(jiǎn)單調(diào)整一下。程序中是+1。
程序需要做的具有通用性,這也是值得注意的地方。本題是搜索“girl”和“cat”,如果換兩個(gè)單詞程序基本不用改,才能說程序有通用性。
功能能夠封裝則要盡量封裝。C語言程序的功能要封裝到函數(shù)里。
使用字符指針相信是一個(gè)好主意。
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--) {// 二維字符數(shù)組清零memset(a, 0, sizeof(a));// 讀入數(shù)據(jù):二維字符數(shù)組,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并且計(jì)數(shù)count2 = count;count = 0;for(i=1; i<=n; i++)for(j=1; j<=m; j++)dfs(i, j, p2); // 匹配cat并且計(jì)數(shù)// 輸出結(jié)果printf("%d %d\n", count2, count);}return 0; }
轉(zhuǎn)載于:https://www.cnblogs.com/tigerisland/p/7564661.html
總結(jié)
以上是生活随笔為你收集整理的HDU5706 GirlCat的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库设计(6/9):存储过程主体
- 下一篇: 工业触屏系统开发经验分享