当前位置:首页 » 编程软件 » 组合与编程

组合与编程

发布时间: 2022-11-13 19:28:57

A. C语言:给定一个无序数组和一个目标值,找出数组中两个数之和等于目标值的所有组合。咋编程

利用一个二重的循环,可以实现这个任务的求解的。
k=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
if(a[i]+a[j]==x)
printf("%d+%d=%d\n",a[i],a[j],x);

B. java最优组合编程问题

没人回答是因为这个没有现成代码,大伙儿也不愿意为了一个问题真的去写
我说一下思路把
1、创建一个map,存储每个点可以合作的点集,如
HashMap<String,List<String>> hp = new ...
hp.add("A", new ArrayList<String>[]{"B", "E", "F", "G"});
b
c..都这么建一遍
2、建一个Stack,按照规则1,把每种排列都枚举出来
3、把所有结果按照个数排序

C. C语言编程10选6全组合并且满足6个数字和问题

代码如下:

#include <stdio.h>


//要求六个数字相加的和

#define AIM 39


int main(){

int number[10]; //用来存放1到10

int su[6];

int i,sum,j=0,k,flag=1;

for(i=0;i<10;i++)

number[i]=i+1;

for(i=0;i<6;i++)

su[i]=0;

for(su[0]=0;su[0]<10;su[0]++)

for(su[1]=0;su[1]<10;su[1]++)

for(su[2]=0;su[2]<10;su[2]++)

for(su[3]=0;su[3]<10;su[3]++)

for(su[4]=0;su[4]<10;su[4]++)

for(su[5]=0;su[5]<10;su[5]++)

{

//j++;

//printf("%d ",j);

sum=0;

for(i=0;i<6;i++)

sum+=number[su[i]];

//printf("%d ",sum);


//如果相加的和满足要求则输出组合

if(sum==AIM){

//判断六个数字之中是否有重复的,并且排除排列顺序不同的组合

for(k=0;k<6;k++)

for(i=k+1;i<6;i++)

if(number[su[i]]<=number[su[k]])

flag=0;

if(flag==1){

for(i=0;i<6;i++)

printf("%d ",number[su[i]]);

j++;

printf(" ");

}

flag=1;

}

}

printf("总共有%d个满足要求的组合 ",j);

return 0;


}

其中宏定义#define AIM后面的数字为需要的总和

本代码选出的组合中数字不能重复

和为39的组合运行结果如下:

D. 编程算法,java,组合:求出n个数中取出k个数的组合,编程终于成功了!!!!需要的自己参考一下哈,哈哈

刚刚开始学java的飘过。。。。不会。。。。

E. 易语言编程的数字组合问题

版本 2

.程序集 窗口程序集1

.程序集变量数组1, 文本型, , "0"

.程序集变量 数组2, 文本型, , "0"

.程序集变量 文本, 文本型

.程序集变量 计次, 整数型

.程序集变量 计次1, 整数型

.程序集变量 计次2, 整数型

.子程序 __启动窗口_创建完毕

编辑框3.是否允许多行 = 真

.计次循环首 (3, 计次)

组合框1.加入项目 (到文本 (计次), )

.计次循环尾 ()

.子程序 _组合框1_列表项被选择

清除数组 (数组1)

清除数组 (数组2)

.计次循环首 (取文本长度 (编辑框1.内容), 计次)

加入成员 (数组1, 取文本中间 (编辑框1.内容, 计次, 1))

.计次循环尾 ()

.计次循环首 (取文本长度 (编辑框2.内容), 计次)

加入成员 (数组2, 取文本中间 (编辑框2.内容, 计次, 1))

.计次循环尾 ()

编辑框3.内容 = “”

.如果真 (组合框1.现行选中项 = 0)

组合1 ()

返回 ()

.如果真结束

.如果真 (组合框1.现行选中项 = 1)

组合2 ()

返回 ()

.如果真结束

.如果真 (取数组成员数 (数组1) < 3)

返回 ()

.如果真结束

.计次循环首 (取数组成员数 (数组1), 计次)

.变量循环首 (计次 + 1, 取数组成员数 (数组1), 1, 计次1)

.变量循环首 (计次1 + 1, 取数组成员数 (数组1), 1, 计次2)

文本 = 数组1 [计次] + 数组1 [计次1] + 数组1 [计次2]

编辑框3.加入文本 (文本, “ ”)

.变量循环尾 ()

.变量循环尾 ()

.计次循环尾 ()

.子程序 组合1

.计次循环首 (取数组成员数 (数组1), 计次1)

.计次循环首 (取数组成员数 (数组2), 计次)

.变量循环首 (计次 + 1, 取数组成员数 (数组2), 1, 计次2)

文本 = 数组1 [计次1] + 数组2 [计次] + 数组2 [计次2]

编辑框3.加入文本 (文本, “ ”)

.变量循环尾 ()

.计次循环尾 ()

.计次循环尾 ()

.子程序 组合2

.计次循环首 (取数组成员数 (数组1), 计次)

.变量循环首 (计次 + 1, 取数组成员数 (数组1), 1, 计次1)

.计次循环首 (取数组成员数 (数组2), 计次2)

文本 = 数组1 [计次] + 数组1 [计次1] + 数组2 [计次2]

编辑框3.加入文本 (文本, “ ”)

.计次循环尾 ()

.变量循环尾 ()

.计次循环尾 ()

F. 排列组合编程问题

这个程序是求n的月之数,程序直接给出答案是1<<(n-1))+(n-1)*(1<<(n-2))。
C语言里1<<x等于2的x次方,所以这个答案很容易看出来其实是2^(n-1)+(n-1)*2^(n-2),^是乘方运算。
下面给出上式的推导过程:
因为最高的一位必然为1,所以位数为n的二进制数的个数为2^(n-1)个(这是很基本的,你要是连这个都不知道为什么我就没啥好说了)。
一、只考虑最高位,所有的数都是1,所以一共有2^(n-1)个1。
二、不考虑最高位,一共有(n-2)位。以最低位为例,所有数中,有一半最低位是0,另一半最低位是1,所以只考虑最低位时,一共有2^(n-1) / 2 = 2^(n-2)个1。同理,只考虑除了最高位的剩下的n-2位中的任意一位时,所有数中一共有2^(n-2)个1。这样加起来有(n-2) * 2^(n-2)个1。

综合一二可知,n的月之数为2^(n-1)+(n-1)*2^(n-2)。即1<<(n-1))+(n-1)*(1<<(n-2))。

G. Java编程:组合,继承和代理的区别

组合的话,是在类中new一个对象,然后就只能调用这个对象的方法了,是死的

而你用代理的话,代理不仅要new那个对象,还要把你想调用这个对象的方法也写出来,方法实现是通过这个new的对象来实现的,当然你也可以在方法中添加你自己想实现的功能,这样做又有了继承中重写的感觉,所以说代理是继承和组合的中庸之道,lz可以看看thinking in java7.3章 7.4章 还有网页链接这篇博客,写的很详细

H. 6个数字,产生3个数字的组合编程

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

I. C语言编程!全组合问题:从n个数中任取k个数的所有组合之积的和

#include <stdio.h>

#define MAX 4
#define SUB 2

int num[MAX] = { 1, 2, 3, 4 };
int mul = 1;
int total = 0;

void GetMul(int n, int s)
{
if (s == SUB)
{
printf("One Proct is %d.\n", mul);
total += mul;
return;
}
else
{
if (n < MAX)
{
mul = mul*num[n];
GetMul(n+1, s+1);
mul = mul/num[n];
GetMul(n+1, s);
}
}
}

void main(void)
{
GetMul(0, 0);
printf("The Total Result is %d.\n", total);
}

建议举一反三

J. 学奥数对编程有用吗

倒不是一定要学,但是碰到了需要做算法优化和各种条件来回判断的时候,那绝对是学过奥数的脑袋转得快,编出的程序代码短效率高。

热点内容
柱子箍筋加密区长度 发布:2025-05-14 10:18:29 浏览:351
云服务器和内网穿透哪个好 发布:2025-05-14 10:16:41 浏览:627
安徽新能源网络配置是什么 发布:2025-05-14 10:06:24 浏览:631
pinode搭建服务器 发布:2025-05-14 10:04:23 浏览:4
电脑服务器ip名称 发布:2025-05-14 10:01:09 浏览:749
connectorpython 发布:2025-05-14 09:48:50 浏览:763
配置不好怎么办 发布:2025-05-14 09:46:40 浏览:623
数据流程图中的数据存储是指 发布:2025-05-14 09:46:39 浏览:446
我的世界服务器id前缀mod 发布:2025-05-14 09:45:53 浏览:831
完整后台网站源码 发布:2025-05-14 09:45:46 浏览:456