Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 生成所有和组合_Objective C_C_Algorithm_Combinations - Fatal编程技术网

Objective c 生成所有和组合

Objective c 生成所有和组合,objective-c,c,algorithm,combinations,Objective C,C,Algorithm,Combinations,给定一组6个数字,例如1,5,8,9,2,6和2个操作数,例如+和-我想知道如何生成所有可能的有效和,例如1+8=9等等 数字可以是正数0-9,操作数可以是+-/*平方和平方根 如果有人能帮忙,我会非常感激 谢谢“正数0-9” 0不是正数 “操作数可以是+-/*平方和平方根” 平方和平方根只接受一个参数,那么如何在列表的两个元素上应用这个参数呢 由于您未在此处指定任何语言,因此您在帖子中所述的添加解决方案: a = [1, 5, 8, 9, 2, 6] print set ( [x + y fo

给定一组6个数字,例如1,5,8,9,2,6和2个操作数,例如+和-我想知道如何生成所有可能的有效和,例如1+8=9等等

数字可以是正数0-9,操作数可以是+-/*平方和平方根

如果有人能帮忙,我会非常感激

谢谢

“正数0-9”

0不是正数

“操作数可以是+-/*平方和平方根”

平方和平方根只接受一个参数,那么如何在列表的两个元素上应用这个参数呢

由于您未在此处指定任何语言,因此您在帖子中所述的添加解决方案:

a = [1, 5, 8, 9, 2, 6]
print set ( [x + y for x in a for y in a] )
这允许同一元素与自身的总和,如果此行为不是有意的,则相应地更改它。 根据需要使用其他操作符

C语言中非常详细的示例:

#include <stdio.h>

void main ()
{
    int list [6] = {1,5,8,9,2,6};
    int i, j;
    for (i = 0; i < 6; i++)
        for (j = i + 1; j < 6; j++)
            printf ("%d + %d = %d\n", list [i], list [j], list [i] + list [j] );
}
#包括
空干管()
{
int list[6]={1,5,8,9,2,6};
int i,j;
对于(i=0;i<6;i++)
对于(j=i+1;j<6;j++)
printf(“%d+%d=%d\n”,列表[i],列表[j],列表[i]+列表[j]);
}
“正数0-9”

0不是正数

“操作数可以是+-/*平方和平方根”

平方和平方根只接受一个参数,那么如何在列表的两个元素上应用这个参数呢

由于您未在此处指定任何语言,因此您在帖子中所述的添加解决方案:

a = [1, 5, 8, 9, 2, 6]
print set ( [x + y for x in a for y in a] )
这允许同一元素与自身的总和,如果此行为不是有意的,则相应地更改它。 根据需要使用其他操作符

C语言中非常详细的示例:

#include <stdio.h>

void main ()
{
    int list [6] = {1,5,8,9,2,6};
    int i, j;
    for (i = 0; i < 6; i++)
        for (j = i + 1; j < 6; j++)
            printf ("%d + %d = %d\n", list [i], list [j], list [i] + list [j] );
}
#包括
空干管()
{
int list[6]={1,5,8,9,2,6};
int i,j;
对于(i=0;i<6;i++)
对于(j=i+1;j<6;j++)
printf(“%d+%d=%d\n”,列表[i],列表[j],列表[i]+列表[j]);
}

因为它是一个集合,并且数字的范围是[0,9]-一个简单的解决方案将是回溯,最多需要3^n<3^10次迭代。只需迭代所有可能性(每个元素可以在列表中/列表外,以及两个元素之间“连接”的所有可能性。对于一元运算:with it/with out it)。
伪代码:

solution(set,aFormula,op1,op2):
  if set == []: print calculate(aFormula)
  else:
     solution(set[1-set.end],aForumula,op1,op2)
     solution(set[1-set.end],op1(aFormula,set[0]),op1,op2)
     solution(set[1-set.end],op2(aFormula,set[0]),op1,op2)

注意-您可能需要对一元运算进行额外处理,但这不会对算法有太大的改变。

因为它是一个集合,并且数字的范围是[0,9]-一个简单的解决方案将是回溯,最多需要3^n<3^10次迭代。只需迭代所有可能性(每个元素可以在列表中/列表外,以及两个元素之间“连接”的所有可能性。对于一元运算:with it/with out it)。
伪代码:

solution(set,aFormula,op1,op2):
  if set == []: print calculate(aFormula)
  else:
     solution(set[1-set.end],aForumula,op1,op2)
     solution(set[1-set.end],op1(aFormula,set[0]),op1,op2)
     solution(set[1-set.end],op2(aFormula,set[0]),op1,op2)

注意-一元运算可能需要额外的处理,但不会对算法造成太大的改变。

因为只有6*5*4(从集合中选取数字)*4(操作数),所以可以轻松生成所有可能的排列并检查每个排列的有效性。我无法提供目标c中的代码,但您可以使用嵌套循环获取所有可能的置换,执行计算并打印置换,如果计算结果与您在置换中选择为“结果”的数字匹配,那么,因为只有6*5*4(从集合中选择数字)*4(操作数),您可以轻松地生成所有可能的排列,并检查每个排列的有效性。我无法提供目标c中的代码,但您可以使用嵌套循环获取所有可能的排列,执行计算并打印排列,如果计算结果与您在排列中选择为“结果”的数字匹配

您能澄清什么是“有效”吗意思?valid指的是一个整数的组合,例如1+2=3是有效的,1+4=3是无效的,你能澄清一下“valid”是什么意思吗?valid指的是一个整数的组合,例如1+2=3是有效的,1+4=3是无效的。谢谢你的回答,抱歉,我是想问一下客观原因中的例子,我补充了“objective-c”标签贴到你的帖子上。对不起,objective-c帮不了你。但想法是一样的。取数字向量,用向量(或向量减去给定元素)压缩向量中的每个元素并对所有结果元组应用所需的操作。消除重复结果。谢谢,添加了C标记,我也很高兴看到C中的代码。只是想尝试一些东西now@Jonathan我在回答中包括了一个详细的C示例。谢谢你的回答,我本想在objective cOK中要求你举个例子,但我添加了“objective-C”“贴上你的标签。抱歉,无法帮助您完成objective-c。但想法是一样的。取数字向量,将向量的每个元素与向量(或向量减去给定元素)压缩,并将所需操作应用于所有生成的元组。排除重复的结果。谢谢,添加了C标记,我也为C中的代码感到高兴。我只是想试试now@Jonathan我在回答中包括了一个冗长的C示例。