一道编程题 ,怎样编写?
23,21,87,12,67,96,51,3,48,60 共10个数,从这10个数中任选4个数,形
成4个数的数组,如:87,60,96,3 及23,48,51,60.....,请编程输出4元
素的全部组合,谢谢!
问题点数:20、回复次数:13Top
1 楼Semigod()回复于 2001-09-05 18:10:16 得分 0
1000- 9999,只要数字中没有重复数字就合要求,就根据数字取数据
Top
2 楼flybird70()回复于 2001-09-05 18:25:06 得分 0
我是一莱鸟,能否给出详细步骤?Top
3 楼phoenix96_2000(Arcrest)回复于 2001-09-05 18:36:44 得分 0
下次来说Top
4 楼lyneville(心佛)回复于 2001-09-05 18:39:45 得分 0
enumTop
5 楼ray2_ls(轻衫踏雪)回复于 2001-09-05 19:06:03 得分 0
gzTop
6 楼zleil(西狂)回复于 2001-09-05 19:14:30 得分 0
用递归算法,自己好好想把。Top
7 楼Belle(不会游泳的鱼....)回复于 2001-09-05 19:18:15 得分 0
int a[4],b;
static int mid[]={23,21,87,12,67,96,51,3,48,60};/////原数组
int i=0;
for( i=0;i<4;i++) //
{
b=(10-i)*rand()/32767;//////////取随机顺序
a[i]=mid[b];
mid[b]=mid[9-i];
mid[9-i]=a[i];
}
//////数组a[]即是所求Top
8 楼Belle(不会游泳的鱼....)回复于 2001-09-05 19:20:57 得分 0
看错了,全部组合得用递归算法Top
9 楼zleil(西狂)回复于 2001-09-05 19:28:23 得分 0
节约网费Top
10 楼740609(蜘蛛)回复于 2001-09-05 19:36:02 得分 0
同意Semigod()Top
11 楼Phourm()回复于 2001-09-05 20:00:43 得分 0
它们有顺序之分吗?
没有时:(有顺序时可以从没有中排列得到)
用一个32位的数(只用到了低10位,16位也可以)的各个位来标明对应的数要不要在数组中
比如说:(0x0286)000000 1010000110 说明第1,2,7和9(0开始计)的数被选择
编程:
int t;
for(DWORD i=0x0000;i<0x0200;i++)
{
t=0;
for(int j=0;j<10;j++)
{
if( i & 1<<j )
t++;
if(t>4)
break;
}
if(t==4)
{
//从i中得到要选择的数(不想写了)
}
}Top
12 楼Belle(不会游泳的鱼....)回复于 2001-09-05 20:23:40 得分 20
hehe,笨方法又有了
CString st,m_data;
int a[4];
static int mid[]={23,21,87,12,67,96,51,3,48,60};
int i,i1,i2,i3,i4,ii;
for( i=0;i<7;i++)
for(i1=i;i1<7;i1++)
for(i2=i1+1;i2<8;i2++)
for(i3=i2+1;i3<9;i3++)
for(i4=i3+1;i4<10;i4++)
{ m_data+="\r\t";
a[0]=mid[i1];
a[1]=mid[i2];
a[2]=mid[i3];
a[3]=mid[i4];
for(ii=0;ii<4;ii++)
{
st.Format ("%d ",a[ii]);
m_data+=st;
}
}
////////调试通过///////显示m_data可以查看结果;Top
13 楼flybird70()回复于 2001-09-05 21:44:16 得分 0
怎么给分Top




