当前位置: 代码迷 >> C语言 >> 新娘新郎配对问题,是老题吗?
  详细解决方案

新娘新郎配对问题,是老题吗?

热度:427   发布时间:2008-06-17 15:29:03.0
新娘新郎配对问题,是老题吗?
新娘新郎配对问题,是老题吗?

有知道的大哥大姐,请帮下小弟,小弟在这里谢过了...
搜索更多相关的解决方案: 新娘  新郎  配对  

----------------解决方案--------------------------------------------------------
新郎新娘配对,谢谢大哥大姐...
3对情侣参加婚礼,新浪为A、B、C.新为X、Y、Z.A说他与X结婚,X说她与C结婚,C说Z是他的新娘。现知他们都在开玩笑。请编程配对。
----------------解决方案--------------------------------------------------------
又是逻辑题,穷举就可以了



[flash=400,300]http://yzfy.byethost17.com/flash.php[/flash][color=white]

[[it] 本帖最后由 爱喝牛奶的猫咪 于 2008-6-17 15:58 编辑 [/it]]
----------------解决方案--------------------------------------------------------
xb yc za
----------------解决方案--------------------------------------------------------
往下找 几天前的题
----------------解决方案--------------------------------------------------------
程序代码:
/*******************************************************************************

        3对情侣参加婚礼,新郎为A、B、C.新娘为X、Y、Z。A说他与X结婚,X说她与C结婚,
    C说Z是他的新娘。现知他们都在开玩笑。请编程配对。

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        这个程序,刚开始以为很简单,设定几个条件就可以,后来发现蛮不是那么回事。
    于是憋了半天,弄出这个程序来。有许多不足之处,还请大家指教,谢谢。

*******************************************************************************/
#include<stdio.h>
char zhuanhuan(int i,int j)
{
        if(j==0)
                switch(i)
                {
                        case 0: return 'A';
                        case 1: return 'B';
                        case 2: return 'C';
                }
        if(j)
                switch(i)
                {
                        case 0: return 'X';
                        case 1: return 'Y';
                        case 2: return 'Z';
                }
}
int main(void)
{
        int a[3]={0};
        int b[3]={0};
        int i,j;
        for(i=0;i<3;i++)
                for(j=0;j<3;j++)
                {
                        if((j==0&&i!=0)&&(j==0&&i!=2))
                                a[i]=1,b[j]=-1;
                        if((i==2&&j!=0)&&(i==2&&j!=2))
                                a[i]=2,b[j]=-2;
                }
        for(i=0;i<3;i++)
        {
                if(a[i]!=1&&a[i]!=2)  a[i]=3;
                if(b[i]!=-1&&b[i]!=-2)  b[i]=-3;
        }
        for(i=0;i<3;i++)
                for(j=0;j<3;j++)
                        if(a[i]+b[j]==0)
                                printf("%c-%c\n",zhuanhuan(i,0),zhuanhuan(j,1));
        getch();
}


[[it] 本帖最后由 广陵绝唱 于 2008-6-20 02:07 编辑 [/it]]
----------------解决方案--------------------------------------------------------
3对情侣参加婚礼
  新郎为A、B、C.新娘为X、Y、Z。
  A说他与X结婚,X说她与C结婚,C说Z是他的新娘。


// 下面是我写的穷举法解
//

#include <stdio.h>

int main(void)
{
    int i;
   
    char df = 'x';  // 基数
    char man[3] = {'x', 'y', 'z'};
    enum{a, b, c};
   
    do{
        // 题目中已知条件分析,如下 if 语句
        if(man[a] != 'x' && man[c] != 'x' && man[c] != 'z')
            printf("a%c b%c c%c\n", man[a], man[b], man[c]);
        
        for(i = a; i <= c; i++)   // 转换配对信息
        {   
            if((man[i] += 1) > 'z')
                man[i] = df;
        }
        
    }while(man[a] != 'x');
   
    printf("\n穷举完毕! ");
    getchar();
    return 0;
}


---------------------------------------------

[[it] 本帖最后由 cosdos 于 2008-6-20 03:34 编辑 [/it]]
----------------解决方案--------------------------------------------------------
/*3对情侣参加婚礼,新浪为A、B、C.新为X、Y、Z.A说他与X结婚,X说她与C结婚,C说Z是他的新娘。
  现知他们都在开玩笑。请编程配对。*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a,b,c;
for(a='X';a<='Z';a++)
    for(b='X';b<='Z';b++)
       {
        if (b==a) continue;
        for(c='X';c<='Z';c++)
           {
            if (c==a||c==b) continue;
            if (a!='X'&&c!='X'&&c!='Z')
              printf("A=%c\nB=%c\nC=%c\n",a,b,c);
            }
       }
system("pause");
return 0;
}


随手写的,这儿没有编译器,不知道对不对。。
----------------解决方案--------------------------------------------------------
  相关解决方案