写在前面
我怎么就学不会(DP)呢
Idea
(BFS),虽然老师让用(DP)写法做。(蒟蒻不会,所以就用了(BFS),
我们定义结构体。
元素有当前的和((val)),当前向上的数字((up)),已经走的步数((tmp))
一开始(val=0,tmp=0,up=1),放入队列,再定义一个记录步数的数组,初始化为(-1),然后就可以爆搜了
struct node{
int val,tmp,up;
}now,net;
Code
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
",sum[n]);
}
return 0;
}
[The quad End
]
[ ext{我要记住你的样子,像鱼记住水的拥抱,像云在天空中停靠;}\ ext{我要忘了你的样子,鱼忘了海的味道,所有梦和烦恼-《像鱼》王贰浪}
]