注册 登录
编程论坛 C++教室

C/C++一个算法的问题

hlmzcj 发布于 2007-06-03 21:33, 808 次点击

我刚学C++在习题中遇到两个题,希望高手帮助解决,谢了~~~顺便帮解释下
(一)
输出如下形式:
A
BBB
CCCCC
DDDDDDD
CCCCC
BBB
A
(二)
有两个队比赛,每队5人,且是一对一比赛,甲队为A,B,C,D,E,乙队为,J,K,L,M,N,经过抽签来决定比赛配对名单,规定:甲队A不和乙队J比赛,M不和D,E比赛.列出所有可能的比赛名单.

10 回复
#2
xq07142007-06-03 21:54
第一个问题应该很简单,你就直接输出就是拉!没有什么特定的要求吧!
第二个的话,学过离散数学或者数据结构也行!画个距阵,也是直接输出下吧!
具体的本人语言学的怎么样 .不在这现丑了!
#3
nuciewth2007-06-03 22:38

1.LZ 是否做过
*
***
*****
*******
*****
***
*
如果你做过,那就不要再问这个了,因为是一样的道理.其中利用行号输出'A'+i-1;
2.用回朔就可以做出了.剪枝函数就是A不和乙队J比赛,M不和D,E比赛.

#4
白居易2007-06-03 23:22
第一题的话,用嵌套循环可以作出来,还有就是if条件语句的使用,可能要烦琐 一些,自己慢慢揣摩吧,这样才会有进步!
#5
孤魂居士2007-06-04 00:57

*
***
*****
********
*****
***
*
这个差不多 ```
前面房间有这题目``自己去看看吧``
#6
hlmzcj2007-06-07 14:39
谢谢大家了
第一个我用一个数组来实现了,还可以的的,
不过第二个想了很久还是没想出来,我就听上面楼主说的,去看看离散和数据结构,谢谢了!!!1
#7
kisscjy2007-06-07 18:36

给你第2题的代码~~~

如下:

#include<iostream>
using namespace std;

void main()
{
char a[5]={'a','b','c','d','e'};

char b[5]={'j','k','l','m','n'};

for(int i=0; i<5; i++)
{
for(int j=0; j<5; j++)
{
if( a[i]=='a' && b[j]=='j' ) continue;

if( ( a[i]=='d'|| a[i]=='e') && b[j]=='m' ) continue;

cout<<a[i]<<" --> "<<b[j]<<endl;
}
}
}

#8
neverDie2007-06-08 17:35
回复:(hlmzcj)C/C++一个算法的问题
LS
#9
jiaju1112007-06-09 10:43

第2题的代码(方法比较笨,循环次数太多)有好的方法帮忙指点一下

#include<iostream>
using namespace std;
void main()
{
int a, b, c, d, e, cnt=0;
char with[5]={'j','k','l','m','n'};


for( a=0; a<5; ++a)
{
if (a==0) continue;
for(b=0; b<5; ++b)
{
if (b==a) continue;
for(c=0; c<5; ++c)
{
if (c==a||c==b) continue;
for(d=0; d<5; ++d)
{
if (d==a||d==b||d==c||d==3) continue;
for(e=0; e<5; ++e)
{
if (e==a||e==b||e==c||e==d||e==3) continue;
cout <<"a--"<<with[a]<<'\t';
cout <<"b--"<<with[b]<<'\t';
cout <<"c--"<<with[c]<<'\t';
cout <<"d--"<<with[d]<<'\t';
cout <<"e--"<<with[e]<<endl;
++cnt;
}
}
}
}
}
cout << cnt <<endl;
}

[此贴子已经被作者于2007-6-9 10:44:27编辑过]

#10
hlmzcj2007-06-26 23:11

谢谢了!!!我好久没来上网了,谢谢大家!!!

#11
侠豪2007-06-26 23:21
还是看懂了!!!!学习了!!!谢谢啦
1