标题:用回溯法搞了好久没搞出来,求别的方法
取消只看楼主
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
结帖率:58.18%
已结贴  问题点数:20 回复次数:1 
用回溯法搞了好久没搞出来,求别的方法
彩灯问题,N个等串在一起,每一个灯的颜色都不相同,问这个灯有多少颜色的组合,并且将他们输出来,如N=2,颜色有blue ,black两种,输出为2 blue black,black ,blue。
我是想学N皇后问题来做的,错误挺多,不知道怎么改,能帮忙看看吗?语法错的多,我用数字表示颜色的不是字符串。。。。。
#include "stdio.h"
int N;

void lights(int N)
{    int i;
    int a[10],b[10];//a[n],b[n]的值为灯的颜色

    for(i=0;i<N;i++)//输入颜色
        scanf("%d",&b[i]);
    for(i=0;i<N;i++)
        a[i]=b[0];//先赋初值,全赋b[0]颜色
   
}
int conflict(int a,int b)
{
    int i,j,t,N;
    for(i=t;i<N;i++)//是否冲突,冲突返回0.不冲突返回1,比较a[i]与它之前的所有的灯的颜色,如果相同则冲突
        for(j=i;j>=0;j--)
    {   
                if(i<N)
            {
                if(a[i]==a[j])
                {
                a[i]=b[i+1];
                return 0;
                }
            }

    }
        return 1;
}
void input(int a)
{   
    int i;
    for(i=0;i<N;i++)
    {
        a[i];
    }

}
int answer(int b,int a)
{
    int j=1,t;
            for(t=1;;t++,j++)//冲突a[i]移至下一颜色,不冲突则比较a[i+1],待i加到n-1时,输出,找到一个解以后将a[0移位],以此类推
            {
                if(t<N)
                {
                    if(conflict(a[t]))
                        continue;   
                    else if(!conflict(a[t]))//如果冲突,a[t]被赋于下一颜色
                    {a[t]=b[j];j++;}
                }
                //恰好边界则找到可行解,输出
                if(t==(N-1))
                {
                    input();

                }
            }        
}
int main(int a,int b)
{

    int k;
    scanf("%d",&N);
    lights(int N);

    while(N)//
    {
        for(k=0;k<N;k++)   
        {
        a[0]=b[k];

        answer();
        }
    }
return 0;
}
搜索更多相关主题的帖子: include 字符串 black 想学 
2014-04-10 16:28
令狐少侠56
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:175
注 册:2014-4-10
得分:0 
回复 2楼 azzbcc
原题
小J在公园里看到一串彩灯,每个彩灯都能释放出不同的颜色,并且每两个彩灯的颜色都不相同,即所有彩灯颜色不重复。随着时间的变化,每个彩灯都会变化自己的颜色,并且都满足每两个彩灯的颜色都不相同。
    小J对这些变化的彩灯十分有兴趣,他想弄清楚这些彩灯总共能变化出多少种不同的组合,这些组合分别又是哪些。小J想请一位计算机高手解决这个问题,你能帮助小J吗?
现在知道了是个全排列问题,不过也不知道回溯能不能做出来?
2014-04-10 22:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429920-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.355920 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved