新娘新郎配对问题,是老题吗?
新娘新郎配对问题,是老题吗?有知道的大哥大姐,请帮下小弟,小弟在这里谢过了...
----------------解决方案--------------------------------------------------------
新郎新娘配对,谢谢大哥大姐...
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();
}
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;
}
随手写的,这儿没有编译器,不知道对不对。。
----------------解决方案--------------------------------------------------------