换成电脑 发表于 2008-6-17 15:29

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

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

有知道的大哥大姐,请帮下小弟,小弟在这里谢过了...

换成电脑 发表于 2008-6-17 15:29

新郎新娘配对,谢谢大哥大姐...

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

爱喝牛奶的猫咪 发表于 2008-6-17 15:48

又是逻辑题,穷举就可以了



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

[[it] 本帖最后由 爱喝牛奶的猫咪 于 2008-6-17 15:58 编辑 [/it]]

weiweigege 发表于 2008-6-19 11:14

xb yc za

卖菜的鸟 发表于 2008-6-19 11:16

往下找 几天前的题

广陵绝唱 发表于 2008-6-20 01:53

[code]/*******************************************************************************

        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();
}
[/code]

[[it] 本帖最后由 广陵绝唱 于 2008-6-20 02:07 编辑 [/it]]

cosdos 发表于 2008-6-20 03:03

3对情侣参加婚礼
  新郎为A、B、C.新娘为X、Y、Z。
  A说他与X结婚,X说她与C结婚,C说Z是他的新娘。

[font=新宋体]
// 下面是我写的穷举法解
//

#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;
}
[/font]

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

[[it] 本帖最后由 cosdos 于 2008-6-20 03:34 编辑 [/it]]

himpo 发表于 2008-6-20 03:17

/*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;
}


随手写的,这儿没有编译器,不知道对不对。。

页: [1]

编程论坛