一道关于C++的深搜题,出了点问题,请高手解答

题目是::::房间(room)空间限制:256MB时间限制:1sDescription有n个房间以及m条双向通道。你需要找到有多少条从1号房间出发到n号房间路径,使得每个... 题目是::::
房间(room) 空间限制:256MB 时间限制:1s
Description
有n个房间以及m条双向通道。
你需要找到有多少条从1号房间出发到n号房间路径,使得每个房间都恰好经过了一次。
Input
第一行两个数n、m。
接下来m行,每行两个数x、y,描述一条连接房间x和房间y的通道。
保证每条通道连接两个不同的房间,并且每两个房间至多只有一条通道连接。
Output
一行一个数,表示满足要求的路径条数。

Range
1≤n≤10,0≤m≤n*(n-1)/2

Sample

room.in
5 7
1 2
1 3
3 2
3 4
1 5
5 4
4 2

room.out
2

两条路径分别是:1-2-3-4-5和1-3-2-4-5。

以下是本人的程序:::::
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,a[1001][1001],ans=0,mark[1001];
void dfs(int k)
{
int i;
bool b;
mark[k]=1;
if (k==n)
{
b=true;
for (i=1;i<=n;i++) if (mark[i]==0) b=false;
if (b==true) ans++;
}
for (i=k+1;i<=n;i++)
{
if (a[k][i]==1) dfs(i);
mark[i]=0;
}
}
int main()
{
freopen("room.in","r",stdin);
freopen("room.out","w",stdout);
int i,x,y;
memset(a,0,sizeof(a));
memset(mark,0,sizeof(mark));
cin>>n>>m;
for (i=1;i<=m;i++)
{
cin>>x>>y;
a[x][y]=1;
a[y][x]=1;
}
dfs(1);
cout<<ans<<endl;
fclose(stdin);fclose(stdout);
return 0;
}
请高手找出问题并详细解释,感谢!
展开
 我来答
ss20096199
推荐于2016-10-12 · TA获得超过111个赞
知道小有建树答主
回答量:150
采纳率:0%
帮助的人:72.2万
展开全部
#include<iostream>
#include<cstdio>
using namespace std;
int n,m,a[1001][1001],ans=0,mark[1001];
void dfs(int k)
{
    int i;
    bool b;
    mark[k]=1;
    if (k==n) 
    {
        b=true;
        for (i=1;i<=n;i++) if (mark[i]==0) b=false;
        if (b==true) ans++;
    }
    for (i=1;i<=n;i++)
    {
        if (a[k][i]==1 && i!= k && mark[i]== 0)
{
dfs(i);
mark[i] = 0;

    }
}
int main()
{
    freopen("in.txt","r",stdin);
    int i,x,y;
    memset(a,0,sizeof(a));
    memset(mark,0,sizeof(mark));
    cin>>n>>m;
    for (i=1;i<=m;i++)
    {
         cin>>x>>y;
         a[x][y]=1;
         a[y][x]=1;
    }
    dfs(1);
    cout<<ans<<endl;
    return 0;
}

dfs的第二个循环,i应该从头开始检查,不应该从k+1开始,从K+1开始的话,你从1走到3,就不会再去检查从3走2 的逻辑了。另外还要加上可走判断mark[i] == 0表示下个点还未走过。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式