任意年龄是什么意思:6个数字,产生3个数字的组合编程?

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/10 15:38:58
大家好,我有6个若干数要产生,3个数字的组合,应该如何编写程序?

如 a[5]={9,5,1,7,0,3}

产生六个数组,为这六个数字!!

我要产生三个数字的组合能产生多少个?

如 951 957 950...一直产生落去,输出产生的组合值,直至不能重复,全部合产生完毕为止!!!

可以用c++ Java 或者VB 或者其他任何相关语语编写

#include <math.h>
#include <stdio.h>

fun()
{
int i,j,k;
char s[]={'9','5','1','7','0','3'};
char tmp[4], a[4];
for(i=0;i<5;i++)
for(j=0;j<5;j++)
for(k=0;k<5;k++){
a[0]=s[i],a[1]=s[j],a[2]=s[k];
if(a[i]!=a[j] && a[i]!=a[k] && a[j]!=a[k]){
tmp[0]=a[0],tmp[1]=a[1],tmp[2]=a[2],tmp[3]=0;
printf("%s\n",tmp);
}
}
}

void main()
{
fun();
}

For i = 0 To 5
如已有:
a(0) = 9
a(1) = 5
a(2) = 1
a(3) = 7
a(4) = 0
a(5) = 3
因为数组中数值不重复,那么进行全排列即可。
For j = 0 To 5
For k = 0 To 5
Text1.Text = Text1.Text & Trim(Str(a(i))) & Trim(Str(a(j))) & Trim(Str(a((k)))) & " "
Next
Text1.Text = Text1.Text & vbCrLf
Next
Next
End Sub

得到答案为:
999 995 991 997 990 993
959 955 951 957 950 953
919 915 911 917 910 913
979 975 971 977 970 973
909 905 901 907 900 903
939 935 931 937 930 933
599 595 591 597 590 593
559 555 551 557 550 553
519 515 511 517 510 513
579 575 571 577 570 573
509 505 501 507 500 503
539 535 531 537 530 533
199 195 191 197 190 193
159 155 151 157 150 153
119 115 111 117 110 113
179 175 171 177 170 173
109 105 101 107 100 103
139 135 131 137 130 133
799 795 791 797 790 793
759 755 751 757 750 753
719 715 711 717 710 713
779 775 771 777 770 773
709 705 701 707 700 703
739 735 731 737 730 733
099 095 091 097 090 093
059 055 051 057 050 053
019 015 011 017 010 013
079 075 071 077 070 073
009 005 001 007 000 003
039 035 031 037 030 033
399 395 391 397 390 393
359 355 351 357 350 353
319 315 311 317 310 313
379 375 371 377 370 373
309 305 301 307 300 303
339 335 331 337 330 333

tx=""
for i=0 to 5
for j=0 to 5
for k=0 to 5
if a(i)<>a(j) and a(i)<>a(k) and a(j)<>a(k) then tx=tx&a(i)&a(j)&a(k)&chr(32)
next
next
next

结果
123 124 125 126 132 134 135 136 142 143 145 146 152 153 154 156 162 163 164 165 213 214 215 216 231 234 235 236 241 243 245 246 251 253 254 256 261 263 264 265 312 314 315 316 321 324 325 326 341 342 345 346 351 352 354 356 361 362 364 365 412 413 415 416 421 423 425 426 431 432 435 436 451 452 453 456 461 462 463 465 512 513 514 516 521 523 524 526 531 532 534 536 541 542 543 546 561 562 563 564 612 613 614 615 621 623 624 625 631 632 634 635 641 642 643 645 651 652 653 654

gjxlzd 的回答 没有考虑 111 122 这样的结果

楼主是否允许出现这样的结果?

就假设已经有了你原例中的数组a[5]={9,5,1,7,0,3} ;
下面这个C++代码:

for(int i=0; i<=5; ++i)
{
for(int j=0; j<=5; ++j)
{
for(int k=0; k<=5; ++k)
{
cout<<a[i]<<a[j]<<a[k]<<endl;
}
}
}

1楼的程序跟我这个程序的前提都是原数组中不得有重复者,否则我这个会重复输出,1楼那个程序完全不将有重复的输出