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

我的代码例如以下:

#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\n",j+1,flag==1? '+':'-');
vis[j]=1;
break;
}
}
}
int main()
{
init();
if(ispath())
{
dfs(st);
if(no<num_side)
{
printf("No solution\n");
return 0;
}
showstep();
}
else
printf("No solution\n");
}

sgu101Domino的更多相关文章

随机推荐

  1. JS求斐波那契数列的N项

    第一种求法: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...

  2. python自动化--语言基础五面向对象、迭代器、range和切片的区分

    面向对象 一.面向对象简单介绍: class Test(): #类的定义 car = "buick" #类变量,定义在类里方法外,可被对象直接调用,具有全局效果 def __ini ...

  3. python自动化--语言基础二运算符、格式化输出、条件语句、循环语句、列表、元组

    运算符包括:算术运算符.比较运算符.赋值运算符.逻辑运算符.成员运算符.身份运算符. 算术运算符 %   取模(余数) //  取相除的整数部分 /   (5/2=2.5) 比较运算符 ==  等于 ...

  4. 如何让不同浏览器调用不同的CSS样式

    如何让不同浏览器调用不同的CSS样式 由 于对W3C标准支持程度的不同,往往导致同一个CSS样式表在各种Web浏览器中的呈现大相径庭.以目前市场占有率最高的两个浏览器Microsoft Interne ...

  5. MFC_2.10选项卡控件的封装

    选项卡控件的封装 1.新建默认MFC项目 2.添加资源Dialog,属性style改child,边框改none,添加类取名CMyDialog1: 同理,CMyDialog2: 3.类向导,添加MFC类 ...

  6. Python爬虫:抓取手机APP的数据

    摘要 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 表单: 表单中包括了用户名和密码,当然都是加密 ...

  7. xilinx vivado 百度云分享 vivado2019.1 2018.3 2017.4

    vivado2019.1 sdx套件 链接:https://pan.baidu.com/s/1ymRpUa2UYTFuafEChA0-ZQ 提取码:cd4p 复制这段内容后打开百度网盘手机App,操作 ...

  8. 调用微信扫一扫功能,踩坑'invalid signature'

    在vue项目中,调用微信扫一扫功能,在安卓系统下完全正常,ios系统下却报错'invalid signature'的错误,这可能令许多小伙伴困惑,经过查询大量博客相关资料,才找到了解决的方法. 原因: ...

  9. you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varchar(255), sort integer not null

    you have an error in your SQL syntax; check the manual that corresponds to your MySQL server version ...

  10. python3 http.server备忘

    python3英文的 打印出来应该不错: https://docs.python.org/3/library/http.server.html#module-http.server python2.7 ...