2030ssxx level
获赞
1
粉丝
0
关注
5
看过 TA
8
南京林业大学
2025
算法工程师
IP属地:江苏
暂未填写个人简介
私信
关注
//DFS好像不能是void函数//没什么好说的,上代码#include#include#includeusing namespace std;int totallen;int m;//棒子个数int stick[21];bool visit[21];bool cmp(int a,int b){ return a>b;}bool DFS(int sum,int number,int position){    if(number==3)    {        //cout        return true;    }   // int sample=0;//不可能的重复边       for(int i=position;i    {        int nsum=sum+stick[i];         // if(nsum>totallen/4||visit[i]||sample==stick[i])continue; if(nsum>totallen/4||visit[i])continue;        visit[i]=true;        if(nsum==totallen/4)//凑成一条边        {            if(DFS(0,number+1,1))//下一条边从第一根棒开始测试            return true;            //else            //{            //    sample=stick[i];//说明这根棒子不能在这种情况下被用            //}        }        else        {            if(DFS(nsum,number,i+1))            return true;            //else            //{            //    sample=stick[i];            //}        }        visit[i]=false;    }    return false;    }int main(){ int n;cin>>n;    for(int i=1;i    {         cin>>m;        totallen=0;        for(int j=1;j        { cin>>stick[j];            totallen+=stick[j];        }        memset(visit,false,sizeof(visit));        sort(stick+1,stick+1+m,cmp); if(totallen%4!=0||stick[1]>totallen/4)        {            cout        }        else        {            if(DFS(0,0,1))//当前边的长度,拼好的边长数量,拼到第几个棒子            cout            else             cout                    }    }}
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
//个人感觉BFS挺简单的,就调用一个函数就行#include #include #include //memsetusing namespace std;struct Pos{   int pos;   int t;   Pos(int pos,int t):pos(pos),t(t){}};bool visit[100000];void BFS(int n,int k){    queue q;    Pos current(n,0);    q.push(current);    visit[n]=true;        while(!q.empty())    {        Pos cur=q.front();        q.pop();        if(cur.pos==k){             cout             break;        }                        for(int i=1;i        {            Pos nextpos(0,0);//必须要初始化            if(i==1){                nextpos.pos=cur.pos-1;                nextpos.t=cur.t+1;            }            else if(i==2){                nextpos.pos=cur.pos+1;                nextpos.t=cur.t+1;            }            else            {                nextpos.pos=cur.pos*2;                nextpos.t=cur.t+1;            }            if(nextpos.pos100000||visit[nextpos.pos]==true)            {                continue;            }            q.push(nextpos);            visit[nextpos.pos]=true;        }    }        }int main(){ int m;cin>>m;    int n,k;    for(int i=1;i    { cin>>n>>k;        memset(visit,false,sizeof(visit));        BFS(n,k);    } }
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客企业服务