#include<bits/stdc++.h>
using namespace std;
int t,a,b,n,head,tail,v[10005][10005];
struct node{
int a,b,step,op,pre;
}q[100000005];
void out(int p){
if(q[p].pre)out(q[p].pre);
printf(" %d",q[p].op+1);
return;
}
void waste(){
memset(v,0x3f,sizeof(v));
v[0][0]=0;
head=tail=0;
q[tail].a=0,q[tail].b=0,q[tail].op=-1,q[tail].pre=-1,q[tail++].step=0;
node cur=q[head++];
for(int i=0,ta,tb;i<6;i++){
switch(i){
case 0:ta=a;tb=cur.b;break;
case 1:ta=cur.a;tb=b;break;
case 2:ta=0;tb=cur.b;break;
case 3:ta=cur.a;tb=0;break;
case 4:if(cur.a+cur.b>a){
ta=a;tb=cur.a+cur.b-a;
}else{
ta=cur.a+cur.b;tb=0;
}break;
case 5:if(cur.a+cur.b>=b){
tb=b;ta=cur.a+cur.b-b;
}else{
tb=cur.a+cur.b;ta=0;
}break;
}
if(v[ta][tb]>cur.step+1){
v[ta][tb]=cur.step+1;
q[tail++].a=ta,q[tail++].b=tb,q[tail++].step=cur.step+1,q[tail++].op=i,q[tail++].pre=head-1;
if(tb==n){
printf("%d",cur.step+1);
out(tail-1);
printf("\n");
return;
}
}
}
}
int main(){
scanf("%d",&t);
for(int i=1;i<=t;i++){
scanf("%d%d%d",&a,&b,&n);
waste();
}
return 0;
}
报错信息:
[Error] ld returned 1 exit status
有知道的大佬帮忙看看吧