題目大意:
在一個5*5的格子中走,每個格子有個數值,每次可以往上下左右走一格,問走了5次後得到的6個數的序列一共有多少種?(一開始站的位置算一個,可以走回去)
思路:
最近我就是在做水題。。。
直接DFS即可。。我用map判斷序列是否重復的。
#include #include #include #include #include using namespace std; int pos[10][10]; const int dx[]={1,-1,0,0}; const int dy[]={0,0,1,-1}; string ans; int a[10]; mapm; void dfs(int x,int y,int cur) { if(cur==6) { ans.clear(); for(int i=0;i<6;i++) ans=ans+(char)a[i]; m[ans]++; return; } for(int i=0;i<4;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(nx<0||ny<0||nx>4||ny>4) continue; a[cur]=pos[nx][ny]; dfs(nx,ny,cur+1); } } int main() { for(int i=0;i<5;i++) for(int j=0;j<5;j++) scanf(%d,&pos[i][j]); for(int i=0;i<5;i++) for(int j=0;j<5;j++) { a[0]=pos[i][j]; dfs(i,j,1); } printf(%d ,m.size()); return 0; }
Boost::tokenizer詳解,boosttokeni
[cpp] /* * Copy
下面向大家介紹下如何用Visual C++進行新聞閱讀器的
[LeetCode]90.Subsets II 題目
我們通常知道的都是用指針存儲一個變量的地址,這個變量具
leetcode筆記:Valid Sudoku 一.題目