C 查找组合 从数组 1、3、8、11、13、14、19、23 中选择 4 个数字的所有组合

发布于 科技 2024-07-31
17个回答
  1. 匿名用户2024-01-31

    #include

    int arr[8] = ;

    void main(void)

    int i,j,k,l;

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

    for(j = 0; j <= 7; j++)

    if(j == i)

    continue;

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

    if(k == i ||k == j)

    continue;

    for(l = 0; l <= 7; l++)

    if(l == i ||l == j ||l == k)

    continue;、3、8、11 或 3、8、11、13 等依次*

    continue;

    1.总和不能是 40*

    if(arr[i] +arr[j] +arr[k] +arr[l] == 40)

    continue;

    3,4,19 不能同时发生*

    if(arr[i] == 3 ||arr[j] == 3 ||arr[k] == 3 ||arr[l] == 3)

    if(arr[i] == 4 ||arr[j] == 4 ||arr[k] == 4 ||arr[l] == 4)

    if(arr[i] == 19 ||arr[j] == 19 ||arr[k] == 19 ||arr[l] == 19)

    continue;

    打印结果*

    printf("%d %d %d %d ", arr[i], arr[j], arr[k], arr[l]);

    结果:按任意键继续

  2. 匿名用户2024-01-30

    是不是把这8个数字的+提取小于40,一定是4个数字,对吧?

    不能重复,对吧?

    a[8]=;

    b[8]=;

    c[4]=;

    count = 0;

    while(1)

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

    for(j=0;j<8;++j)

    if(j!=一)扫描 if(a[i]+b[j]+b[j+1]+b[j+2]<=40) a[当前位置]+a[当前前 1,2,3 个位置] 如果总和结果小于 40,则输出

    printf("%d %d %d %d ",a[i],b[j],b[j+1],b[j+2]);

    i+=1;if(i>9)

    break;

    程序是即时编写的,肯定会有小错误。

    但是应该给出一点想法。

  3. 匿名用户2024-01-29

    规模不大,直接排尽就够了。

  4. 匿名用户2024-01-28

    取 3 个元素的 4 个元素的组合数 = c(4,3) = 4

  5. 匿名用户2024-01-27

    在 4 位数字中,只有 1 种类型的数字。

    c(1,4) = 4 种。

    在 4 位数字中,只有 2 种数字。

    c(2,4)×3

    18种。 在 4 位数字中,只有 3 种数字。

    c(3,4)×3

    12种。 在 4 位数字中,有 4 种数字,有 1 种。

    加法原理有4+18+12+1=35种。

    答:总共有35种组合。

    玩得愉快。

  6. 匿名用户2024-01-26

    (1),,1,2,3,4 都取自 1 种,1234

    2) 从 1、2、3、4 中取一个数字有四种可能性:1。当这个数字重复1次时,即取两次,然后从其他三个数字中取2次,即有c(4,1)*c(3,2)=12种。

    当这个数字重复1次时,取两次,然后其他三个数字中的1个也重复,即有c(4,1)*c(3,1)2=6种。

    第二,当这个数字重复两次时,即取3次,然后从其他三个数字中取1,即有c(4,1)*c(3,1)=12种。

    三。 当这个数字重复 3 次时,取 4 次,即有 c(4,1)=4

    也就是说,总数有 1 + 12 + 6 + 12 + 4 = 35

  7. 匿名用户2024-01-25

    根据题目的要求,可分为四类:

    1)只拿走了其中一个。

    数字:因此,有 c(4,1)=4 种方法可以获取它。

    2)取两个数字:

    这样,有 c(4,2) = 6 种方法可以服用它。

    但是,有三种不同的情况,其中两个数字中的一个出现 3 次,两个数字各出现 2 次,另一个数字出现 3 次。

    所以有 6 3 = 18 种。

    3) 取 3 个数字:

    这样,有 c(4,3)=4 种方法可以服用它。

    但是这些数字中的一个可以出现 2 次,因此有三种不同的情况,因此有 4 3 = 12 种类型。

    4) 每个数字取 1 次:

    这样,有 c(4,4)=1 种方法可以取它。

    因此,有 4 + 18 + 12 + 1 = 35 种。

  8. 匿名用户2024-01-24

    总数为4*4*4*4=256种。

    那些没有见面的人是:

    4个不同数字的排列方式为a44=4*3*2*1=24种,2对相同(如2233和2323或3344和3443),c42*c42=(4*3 2)*(4*3 2)=36种。

    1对相同,另外2对不同(例如2213和2231)c41*c32*c42=4*3*(4*3 2)=72。

    总计:256-24-36-72 = 124 种。

  9. 匿名用户2024-01-23

    1234 和 1324 是重复的,所以恐怕只有一种组合。

  10. 匿名用户2024-01-22

    分类讨论,既然1234 1324是重复的,那么其实排序是不需要考虑的,只要考虑数字的选择就行了。

    1 无数字重复 1 种类型。

    2 重复一次C41 C32 = 8 种。

    3.两个数字各重复两次:c42=6种。

    4.一个数字重复三次 c41 c31 = 12 种 5 一个数字重复四次 c41 = 4 种。

    总共有31种类型。

  11. 匿名用户2024-01-21

    只有 1 种类型的非重复项。

    1.重复两次 有3种。

    2.重复两次 有3种。

    3 重复两次 有 3 种。

    4 重复两次 有 3 种。

    1 重复 3 次 有 3 种。

    2.重复三次 有3种。

    3 重复 3 次 有 3 种。

    4 重复 3 次 有 3 种。

    1 重复 4 次 有 1 种。

    2.重复四次 有1种。

    3.重复四次 有1种。

    4.重复四次 有1种。

    共 29 个

  12. 匿名用户2024-01-20

    ABCD 组合。

    1 个 ABCC 组合。

    4 3 = 12 种。

    ABB组合。

    6 2 = 12 种。

    AABB组合。

    6 种 AAAA 组合。

    4种1+12+12+6+4=35种组合。

  13. 匿名用户2024-01-19

    有一个数字出现了四次。

    4种,1111、2222、3333、4444,一个数字出现3次,有4*3种,1112、1113、1114、2221......

    在4*3、1123、1124中出现两次的数字有4*3种。

    一个数字有 1 种 1 种出现,1234

    所以 4+12+12+1=29

  14. 匿名用户2024-01-18

    解决方案,从 10 个中选择 3 个,并使用紊乱组合。

    则 n=c10(3)=10x9x8 3 2=60 (群组).

  15. 匿名用户2024-01-17

    如果数字可以重复使用,它应该是 8 的四次方,即 4096 位四位数字。

    如果数字不能重复,则为 8*7*6*5=1680,即 1680 个四位数字。

  16. 匿名用户2024-01-16

    千: 1 9 9 9 9 9 9 9 9 9 9 9 1 00 00 0 0 0 0 0 0 0 0 0 0 0 ,..0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 9 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    有 9x10x10x10=9000 组。

  17. 匿名用户2024-01-15

    2、4、5、6、7 和 8 有多少个数字组合?

    有 6、5、4 个可能的 3 个按顺序排列,然后删除 3 x 2 的顺序

    所以组法 = 6x5x4 3x2) = 20 种。

相关回答
7个回答2024-07-31

您可以将数组的指针强制转换为双字节短类型。 >>>More

23个回答2024-07-31

1:你定义一个数组变量,在堆栈中为他划分空间,堆栈中的空间是编译器的责任,你不需要清理数组空间; 而且你有一个新的或者malloc方法动态申请内存空间,就是在堆里给他分配空间,堆里的空间需要手动**,如果不手动**,就会造成内存泄漏。 : >>>More

17个回答2024-07-31

p5[1] 取第二个字符的地址,即'b',打印结果为b,取p5[0]+1"def",打印结果为 def >>>More

6个回答2024-07-31

#include

using namespace std; >>>More

13个回答2024-07-31

#include

int main(void) >>>More