zoukankan      html  css  js  c++  java
  • sgu101Domino

    给你一些边,假设存在欧拉路径就打出来

    我的代码例如以下:

    #include<iostream>
    #include<cstring>
    using namespace std;
    int dot[110],vis[110],degree[110],num_side,num_dot,no,road[110][110],st;
    struct node
    {
    	int a,b;
    }side[110],step[110];
    void init()
    {
    	int i;
    	num_dot=no=0;
    	memset(degree,0,sizeof(degree));
    	memset(vis,0,sizeof(vis));
    	memset(road,0,sizeof(road));
    	scanf("%d",&num_side);
    	for(i=0;i<num_side;i++)
    	{
    		scanf("%d%d",&side[i].a,&side[i].b);
    		degree[side[i].a]++,degree[side[i].b]++;
    		road[side[i].a][side[i].b]++,road[side[i].b][side[i].a]++;
    		if(!vis[side[i].a])
    			dot[num_dot++]=side[i].a,vis[side[i].a]=1;
    		if(!vis[side[i].b])
    			dot[num_dot++]=side[i].b,vis[side[i].b]=1;
    	}
    }
    bool ispath()
    {
    	int sum=0,i;
    	st=dot[0];
    	for(i=0;i<num_dot;i++)
    		if(degree[dot[i]]&1)
    		{
    			st=dot[i];
    			sum++;
    			if(sum>2)
    				return 0;
    		}
    	return 1;
    }
    void dfs(int s)
    {
    	int i;
    	for(i=0;i<num_dot;i++)
    		if(road[s][dot[i]]>0)
    		{
    			road[s][dot[i]]--,road[dot[i]][s]--;
    			dfs(dot[i]);
    			step[no].a=s,step[no].b=dot[i],no++;
    		}
    }
    void showstep()
    {
    	int i,j,flag;
    	memset(vis,0,sizeof(vis));
    	for(i=no-1;i>-1;i--)
    		for(j=0;j<num_side;j++)
    			if(!vis[j])
    			{
    				if(side[j].a==step[i].a&&side[j].b==step[i].b)
    					flag=1;
    				else if(side[j].a==step[i].b&&side[j].b==step[i].a)
    					flag=2;
    				else 
    					flag=0;
    				if(flag!=0)
    				{
    					printf("%d %c
    ",j+1,flag==1?

    '+':'-'); vis[j]=1; break; } } } int main() { init(); if(ispath()) { dfs(st); if(no<num_side) { printf("No solution "); return 0; } showstep(); } else printf("No solution "); }


     

  • 相关阅读:
    srum.3
    进程调度
    Scrum 项目——1
    《构建之法》—第6-7章
    团队合作——2
    团队合作——1
    作业调度_3
    作业调度——实验2
    典型用户
    【软件工程】做汉堡包
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/6914329.html
Copyright © 2011-2022 走看看