我怎么就学不会\(DP\)呢node
连接数组
\(BFS\),虽然老师让用\(DP\)写法作。(蒟蒻不会,因此就用了\(BFS\),ide
咱们定义结构体。idea
元素有当前的和\((val)\),当前向上的数字\((up)\),已经走的步数\((tmp)\)spa
一开始\(val=0,tmp=0,up=1\),放入队列,再定义一个记录步数的数组,初始化为\(-1\),而后就能够爆搜了code
struct node{ int val,tmp,up; }now,net;
int sum[maxn]; struct node{ int val,tmp,up; }now,net; inline void bfs(){ now.val=0; now.tmp=0; now.up=1; queue<node> q; q.push(now); while(q.size()){ now=q.front(); q.pop(); if(now.val<maxn){ for(int i=1;i<=6;i++){ if(now.up==i||now.up+i==7||sum[now.val+i]!=-1) continue; net.tmp=now.tmp+1; net.val=now.val+i; net.up=i; sum[net.val]=net.tmp; q.push(net); } } } } int main(){ memset(sum,-1,sizeof sum); bfs(); int T=read(); while(T--){ int n=read(); printf("%d\n",sum[n]); } return 0; }
\[ The \quad End \]队列
\[ \text{我要记住你的样子,像鱼记住水的拥抱,像云在天空中停靠;}\\ \text{我要忘了你的样子,鱼忘了海的味道,全部梦和烦恼-《像鱼》王贰浪} \]get