C++ 正在查找数组的总数

C++ 正在查找数组的总数,c++,arrays,algorithm,combinations,permutation,C++,Arrays,Algorithm,Combinations,Permutation,我有一个由N个整数组成的数组。我还有一个整数K。 我想通过应用下面的操作精确地执行K次,找出可以从数组A获得的不同数组的数量 选择数组中的某个元素并将其乘以-1 数组A=[2,3,2]和k=2 我有四种可能的数组 1.[2,3,2] 2.[-2,-3,2] 3.[-2,3,-2] 4.[2,-3,-2] 这可以计算为∑其中r是{k,k-2,k-4…} 编辑 但是对于正数和负数的组合,假设我们的数组是A=[-1,2,3]和k=3,所有可能的组合都是 1.[1,2,3]2.[-1,-2,3]3.

我有一个由N个整数组成的数组。我还有一个整数K。 我想通过应用下面的操作精确地执行K次,找出可以从数组A获得的不同数组的数量

  • 选择数组中的某个元素并将其乘以-1
数组A=[2,3,2]和k=2 我有四种可能的数组

1.
[2,3,2]
2.
[-2,-3,2]
3.
[-2,3,-2]
4.
[2,-3,-2]

这可以计算为∑其中r是{k,k-2,k-4…}

编辑

但是对于正数和负数的组合,假设我们的数组是A=[-1,2,3]和k=3,所有可能的组合都是

1.
[1,2,3]
2.
[-1,-2,3]
3.
[-1,2,-3]
4.
[1,-2,-3]

共4个数组,共4个数组。 我刚刚提交的代码,我认为应该是正确的

int main()
{
   int n,k;
   int arr[11];
   arr[0]=1;
   for (int i=1;i<=10;i++)
   {
        arr[i]=arr[i-1]*i;
        //cout<<arr[i]<<" ";
   }

    long int ans=0;
    cin>>n>>k;   / n for number of elements and k for operations
    for (int i=0;i<n;i++)
    {
        int num;   array element
        cin>>num;
    }
    int i=(k%2==0?2:1);
    for(;i<=k;i+=2)
    {
        ans=ans+arr[n]/(arr[k]*arr[n-k]);
    }
    if(k%2==0)
        ans=arr[n]/(arr[k]*arr[n-k])+1; 
    if(n==1 && k%2==1)
        ans=1;
    cout<<ans;
}
intmain()
{
int n,k;
int-arr[11];
arr[0]=1;
对于(int i=1;inum;
}
int i=(k%2==0?2:1);

对于(;i这是一个巨大的多维设置。对于K=1…10和N=1…14,一些使用并行数组处理语言的蛮力编码显示了以下数量的唯一结果:

┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────┬────┬────┬────┬────┐
│    │N=1│N=2│N=3│N=4│N=5│N=6│N=7│N=8│N=9│N=10│N=11│N=12│N=13│N=14│
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=1 │1  │2  │3  │4  │5  │6  │7  │8  │9  │10  │11  │12  │13  │14  │
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=2 │1  │2  │4  │7  │11 │16 │22 │29 │37 │46  │56  │67  │79  │92  │
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=3 │1  │2  │4  │8  │15 │26 │42 │64 │93 │130 │176 │232 │299 │378 │
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=4 │1  │2  │4  │8  │16 │31 │57 │99 │163│256 │386 │562 │794 │1093│
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=5 │1  │2  │4  │8  │16 │32 │63 │120│219│382 │638 │1024│1586│2380│
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=6 │1  │2  │4  │8  │16 │32 │64 │127│247│466 │848 │1486│2510│4096│
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=7 │1  │2  │4  │8  │16 │32 │64 │128│255│502 │968 │1816│3302│5812│
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=8 │1  │2  │4  │8  │16 │32 │64 │128│256│511 │1013│1981│3797│7099│
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=9 │1  │2  │4  │8  │16 │32 │64 │128│256│512 │1023│2036│4017│7814│
├────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼────┼────┼────┼────┼────┤
│K=10│1  │2  │4  │8  │16 │32 │64 │128│256│512 │1024│2047│4083│8100│
└────┴───┴───┴───┴───┴───┴───┴───┴───┴───┴────┴────┴────┴────┴────┘
┌────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────────┬──────────────────────────────────────────┬──────────────────────────────────────────┬──────────────────────────────────────────┬──────────────────────────────────────────┬──────────────────────────────────────────┐
│    │N=1                                 │N=2                                 │N=3                                 │N=4                                 │N=5                                 │N=6                                 │N=7                                 │N=8                                 │N=9                                 │N=10                                      │N=11                                      │N=12                                      │N=13                                      │N=14                                      │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=1 │(1!1)                               │(1!2)                               │(1!3)                               │(1!4)                               │(1!5)                               │(1!6)                               │(1!7)                               │(1!8)                               │(1!9)                               │(1!10)                                    │(1!11)                                    │(1!12)                                    │(1!13)                                    │(1!14)                                    │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=2 │(0!1)+(2!1)                         │(0!2)+(2!2)                         │(0!3)+(2!3)                         │(0!4)+(2!4)                         │(0!5)+(2!5)                         │(0!6)+(2!6)                         │(0!7)+(2!7)                         │(0!8)+(2!8)                         │(0!9)+(2!9)                         │(0!10)+(2!10)                             │(0!11)+(2!11)                             │(0!12)+(2!12)                             │(0!13)+(2!13)                             │(0!14)+(2!14)                             │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=3 │(1!1)+(3!1)                         │(1!2)+(3!2)                         │(1!3)+(3!3)                         │(1!4)+(3!4)                         │(1!5)+(3!5)                         │(1!6)+(3!6)                         │(1!7)+(3!7)                         │(1!8)+(3!8)                         │(1!9)+(3!9)                         │(1!10)+(3!10)                             │(1!11)+(3!11)                             │(1!12)+(3!12)                             │(1!13)+(3!13)                             │(1!14)+(3!14)                             │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=4 │(0!1)+(2!1)+(4!1)                   │(0!2)+(2!2)+(4!2)                   │(0!3)+(2!3)+(4!3)                   │(0!4)+(2!4)+(4!4)                   │(0!5)+(2!5)+(4!5)                   │(0!6)+(2!6)+(4!6)                   │(0!7)+(2!7)+(4!7)                   │(0!8)+(2!8)+(4!8)                   │(0!9)+(2!9)+(4!9)                   │(0!10)+(2!10)+(4!10)                      │(0!11)+(2!11)+(4!11)                      │(0!12)+(2!12)+(4!12)                      │(0!13)+(2!13)+(4!13)                      │(0!14)+(2!14)+(4!14)                      │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=5 │(1!1)+(3!1)+(5!1)                   │(1!2)+(3!2)+(5!2)                   │(1!3)+(3!3)+(5!3)                   │(1!4)+(3!4)+(5!4)                   │(1!5)+(3!5)+(5!5)                   │(1!6)+(3!6)+(5!6)                   │(1!7)+(3!7)+(5!7)                   │(1!8)+(3!8)+(5!8)                   │(1!9)+(3!9)+(5!9)                   │(1!10)+(3!10)+(5!10)                      │(1!11)+(3!11)+(5!11)                      │(1!12)+(3!12)+(5!12)                      │(1!13)+(3!13)+(5!13)                      │(1!14)+(3!14)+(5!14)                      │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=6 │(0!1)+(2!1)+(4!1)+(6!1)             │(0!2)+(2!2)+(4!2)+(6!2)             │(0!3)+(2!3)+(4!3)+(6!3)             │(0!4)+(2!4)+(4!4)+(6!4)             │(0!5)+(2!5)+(4!5)+(6!5)             │(0!6)+(2!6)+(4!6)+(6!6)             │(0!7)+(2!7)+(4!7)+(6!7)             │(0!8)+(2!8)+(4!8)+(6!8)             │(0!9)+(2!9)+(4!9)+(6!9)             │(0!10)+(2!10)+(4!10)+(6!10)               │(0!11)+(2!11)+(4!11)+(6!11)               │(0!12)+(2!12)+(4!12)+(6!12)               │(0!13)+(2!13)+(4!13)+(6!13)               │(0!14)+(2!14)+(4!14)+(6!14)               │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=7 │(1!1)+(3!1)+(5!1)+(7!1)             │(1!2)+(3!2)+(5!2)+(7!2)             │(1!3)+(3!3)+(5!3)+(7!3)             │(1!4)+(3!4)+(5!4)+(7!4)             │(1!5)+(3!5)+(5!5)+(7!5)             │(1!6)+(3!6)+(5!6)+(7!6)             │(1!7)+(3!7)+(5!7)+(7!7)             │(1!8)+(3!8)+(5!8)+(7!8)             │(1!9)+(3!9)+(5!9)+(7!9)             │(1!10)+(3!10)+(5!10)+(7!10)               │(1!11)+(3!11)+(5!11)+(7!11)               │(1!12)+(3!12)+(5!12)+(7!12)               │(1!13)+(3!13)+(5!13)+(7!13)               │(1!14)+(3!14)+(5!14)+(7!14)               │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=8 │(0!1)+(2!1)+(4!1)+(6!1)+(8!1)       │(0!2)+(2!2)+(4!2)+(6!2)+(8!2)       │(0!3)+(2!3)+(4!3)+(6!3)+(8!3)       │(0!4)+(2!4)+(4!4)+(6!4)+(8!4)       │(0!5)+(2!5)+(4!5)+(6!5)+(8!5)       │(0!6)+(2!6)+(4!6)+(6!6)+(8!6)       │(0!7)+(2!7)+(4!7)+(6!7)+(8!7)       │(0!8)+(2!8)+(4!8)+(6!8)+(8!8)       │(0!9)+(2!9)+(4!9)+(6!9)+(8!9)       │(0!10)+(2!10)+(4!10)+(6!10)+(8!10)        │(0!11)+(2!11)+(4!11)+(6!11)+(8!11)        │(0!12)+(2!12)+(4!12)+(6!12)+(8!12)        │(0!13)+(2!13)+(4!13)+(6!13)+(8!13)        │(0!14)+(2!14)+(4!14)+(6!14)+(8!14)        │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=9 │(1!1)+(3!1)+(5!1)+(7!1)+(9!1)       │(1!2)+(3!2)+(5!2)+(7!2)+(9!2)       │(1!3)+(3!3)+(5!3)+(7!3)+(9!3)       │(1!4)+(3!4)+(5!4)+(7!4)+(9!4)       │(1!5)+(3!5)+(5!5)+(7!5)+(9!5)       │(1!6)+(3!6)+(5!6)+(7!6)+(9!6)       │(1!7)+(3!7)+(5!7)+(7!7)+(9!7)       │(1!8)+(3!8)+(5!8)+(7!8)+(9!8)       │(1!9)+(3!9)+(5!9)+(7!9)+(9!9)       │(1!10)+(3!10)+(5!10)+(7!10)+(9!10)        │(1!11)+(3!11)+(5!11)+(7!11)+(9!11)        │(1!12)+(3!12)+(5!12)+(7!12)+(9!12)        │(1!13)+(3!13)+(5!13)+(7!13)+(9!13)        │(1!14)+(3!14)+(5!14)+(7!14)+(9!14)        │
├────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┼──────────────────────────────────────────┤
│K=10│(0!1)+(2!1)+(4!1)+(6!1)+(8!1)+(10!1)│(0!2)+(2!2)+(4!2)+(6!2)+(8!2)+(10!2)│(0!3)+(2!3)+(4!3)+(6!3)+(8!3)+(10!3)│(0!4)+(2!4)+(4!4)+(6!4)+(8!4)+(10!4)│(0!5)+(2!5)+(4!5)+(6!5)+(8!5)+(10!5)│(0!6)+(2!6)+(4!6)+(6!6)+(8!6)+(10!6)│(0!7)+(2!7)+(4!7)+(6!7)+(8!7)+(10!7)│(0!8)+(2!8)+(4!8)+(6!8)+(8!8)+(10!8)│(0!9)+(2!9)+(4!9)+(6!9)+(8!9)+(10!9)│(0!10)+(2!10)+(4!10)+(6!10)+(8!10)+(10!10)│(0!11)+(2!11)+(4!11)+(6!11)+(8!11)+(10!11)│(0!12)+(2!12)+(4!12)+(6!12)+(8!12)+(10!12)│(0!13)+(2!13)+(4!13)+(6!13)+(8!13)+(10!13)│(0!14)+(2!14)+(4!14)+(6!14)+(8!14)+(10!14)│
└────┴────────────────────────────────────┴────────────────────────────────────┴────────────────────────────────────┴────────────────────────────────────┴────────────────────────────────────┴────────────────────────────────────┴────────────────────────────────────┴────────────────────────────────────┴────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────────┘
我们看不到任何明显的模式,尽管它确实存在。我们可以看到的一件事是,当执行否定足够多次时(即K是“耗尽”数组),我们似乎达到了2^(N-1)个独特的结果(即1、2、4、8、16等)

假设我们强制执行。如果我们有一个4长度数组(即N=4)和K=1,那么数组的元素1、2、3或4可以被求反:

┌─┬─┬─┬─┐
│1│2│3│4│
└─┴─┴─┴─┘
如果K=2,我们得到一个新的a维(现在是一个2维问题),现在有16个可能的求反索引对:

┌───┬───┬───┬───┐
│1 1│1 2│1 3│1 4│
├───┼───┼───┼───┤
│2 1│2 2│2 3│2 4│
├───┼───┼───┼───┤
│3 1│3 2│3 3│3 4│
├───┼───┼───┼───┤
│4 1│4 2│4 3│4 4│
└───┴───┴───┴───┘
例如,[4 2]表示数组[4]和数组[2]都要乘以-1

设置K=3使其成为三维:

┌─────┬─────┬─────┬─────┐┌─────┬─────┬─────┬─────┐┌─────┬─────┬─────┬─────┐┌─────┬─────┬─────┬─────┐
│1 1 1│1 1 2│1 1 3│1 1 4││2 1 1│2 1 2│2 1 3│2 1 4││3 1 1│3 1 2│3 1 3│3 1 4││4 1 1│4 1 2│4 1 3│4 1 4│
├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤
│1 2 1│1 2 2│1 2 3│1 2 4││2 2 1│2 2 2│2 2 3│2 2 4││3 2 1│3 2 2│3 2 3│3 2 4││4 2 1│4 2 2│4 2 3│4 2 4│
├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤
│1 3 1│1 3 2│1 3 3│1 3 4││2 3 1│2 3 2│2 3 3│2 3 4││3 3 1│3 3 2│3 3 3│3 3 4││4 3 1│4 3 2│4 3 3│4 3 4│
├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤├─────┼─────┼─────┼─────┤
│1 4 1│1 4 2│1 4 3│1 4 4││2 4 1│2 4 2│2 4 3│2 4 4││3 4 1│3 4 2│3 4 3│3 4 4││4 4 1│4 4 2│4 4 3│4 4 4│
└─────┴─────┴─────┴─────┘└─────┴─────┴─────┴─────┘└─────┴─────┴─────┴─────┘└─────┴─────┴─────┴─────┘
…其中,例如[1]意味着数组[1]将在一行中乘以-1三次。现在我们还可以看到64种可能性中的一些是重复的

在进行蛮力计算时,实际上涉及到10维数据。随着数据变得异常庞大,最终系统内存耗尽

数组包含什么数值并不重要。相反,我们当然只需要计算符号变化,即-1的乘法。以下是K=1…5和N=1…5的唯一组合的可能数量:

┌───┬────┬───────────┬───────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│   │N=1 │N=2        │N=3                            │N=4                                                                              │N=5                                                                                                                                                                                                      │
├───┼────┼───────────┼───────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│K=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 1 -1 1 1│1 1 1 -1 1│1 1 1 1 -1│                                                                                                                                                 │
│   │└──┘│└────┴────┘│└──────┴──────┴──────┘         │└────────┴────────┴────────┴────────┘                                            │└──────────┴──────────┴──────────┴──────────┴──────────┘                                                                                                                                                 │
├───┼────┼───────────┼───────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│K=2│┌─┐ │┌───┬─────┐│┌─────┬───────┬───────┬───────┐│┌───────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐            │┌─────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┐                                                                      │
│   ││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 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 -1│1 1 -1 -1 1│1 1 -1 1 -1│1 1 1 -1 -1│                                                                      │
│   │└─┘ │└───┴─────┘│└─────┴───────┴───────┴───────┘│└───────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘            │└─────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┘                                                                      │
├───┼────┼───────────┼───────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│K=3│┌──┐│┌────┬────┐│┌──────┬──────┬──────┬────────┐│┌────────┬────────┬────────┬────────┬──────────┬──────────┬──────────┬──────────┐│┌──────────┬──────────┬──────────┬──────────┬──────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┐               │
│   ││-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 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│-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│               │
│   │└──┘│└────┴────┘│└──────┴──────┴──────┴────────┘│└────────┴────────┴────────┴────────┴──────────┴──────────┴──────────┴──────────┘│└──────────┴──────────┴──────────┴──────────┴──────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┘               │
├───┼────┼───────────┼───────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│K=4│┌─┐ │┌───┬─────┐│┌─────┬───────┬───────┬───────┐│┌───────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬───────────┐│┌─────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬───────────┬─────────────┬─────────────┬─────────────┬─────────────┬─────────────┐│
│   ││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 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│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 -1 -1 -1││
│   │└─┘ │└───┴─────┘│└─────┴───────┴───────┴───────┘│└───────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────────┘│└─────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴───────────┴─────────────┴─────────────┴─────────────┴─────────────┴─────────────┘│
├───┼────┼───────────┼───────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│K=5│┌──┐│┌────┬────┐│┌──────┬──────┬──────┬────────┐│┌────────┬────────┬────────┬────────┬──────────┬──────────┬──────────┬──────────┐│┌──────────┬──────────┬──────────┬──────────┬──────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬──────────────┐│
│   ││-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 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│-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 -1 -1 -1││
│   │└──┘│└────┴────┘│└──────┴──────┴──────┴────────┘│└────────┴────────┴────────┴────────┴──────────┴──────────┴──────────┴──────────┘│└──────────┴──────────┴──────────┴──────────┴──────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴────────────┴──────────────┘│
└───┴────┴───────────┴───────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
这明确地向我们展示了这种模式。如果K是奇数,我们得到奇数个否定,如果K是偶数,我们得到偶数个否定。这两种情况都可以发生在数组大小N允许的数量内。也就是说,如果K=5,我们可以得到1或3或5个否定,或者说,如果N=4,我们不能得到5个否定,但只能得到1或3个否定

因此,我们可以使用阶乘/二项式(m!n)来解决这个问题,它告诉我们n个数值空间中m个元素的唯一组合的可能数量。即3!5将返回10,因为有10种方法可以组合1,2,3,4,5的3个元素:

1 2 3
1 2 4
1 2 5
1 3 4
1 3 5
1 4 5
2 3 4
2 3 5
2 4 5
3 4 5
4!5将返回5:

1 2 3 4
1 2 3 5
1 2 4 5
1 3 4 5
2 3 4 5
3!3将返回1:

1 2 3
该问题的公式为(2个示例):

注:
0!n始终为1
n!n始终为1
(>n)!n始终为0(例如12!7将返回0)

要解决此任务,请执行(同样,对于大型集合,其中K=1…10,N=1…14):

结果与之前的野蛮人强迫的结果相同:

       N=1  N=2  N=3  N=4  N=5  N=6  N=7  N=8  N=9  N=10  N=11  N=12  N=13  N=14 
 K=1     1    2    3    4    5    6    7    8    9    10    11    12    13    14 
 K=2     1    2    4    7   11   16   22   29   37    46    56    67    79    92 
 K=3     1    2    4    8   15   26   42   64   93   130   176   232   299   378 
 K=4     1    2    4    8   16   31   57   99  163   256   386   562   794  1093 
 K=5     1    2    4    8   16   32   63  120  219   382   638  1024  1586  2380 
 K=6     1    2    4    8   16   32   64  127  247   466   848  1486  2510  4096 
 K=7     1    2    4    8   16   32   64  128  255   502   968  1816  3302  5812 
 K=8     1    2    4    8   16   32   64  128  256   511  1013  1981  3797  7099 
 K=9     1    2    4    8   16   32   64  128  256   512  1023  2036  4017  7814 
 K=10    1    2    4    8   16   32   64  128  256   512  1024  2047  4083  8100 

这些是经过K次修改后的唯一阵列总数。希望这能澄清:-)。

我没有太多的声誉来评论,所以我在这里询问


@Stormwind情况并非如此,因为数组可能也包含0。

现有符号假设如何更改您的算法?是否有任何原因导致
-2,-3,-2
不正常?在第二个示例中
2.[-1,-2,3]
4.[-1,-2,3]
正在重复,是吗?现在
3.-1,2,-3
5.-1,2,-3]
是否为same@Michi我的错,更新了。
       N=1  N=2  N=3  N=4  N=5  N=6  N=7  N=8  N=9  N=10  N=11  N=12  N=13  N=14 
 K=1     1    2    3    4    5    6    7    8    9    10    11    12    13    14 
 K=2     1    2    4    7   11   16   22   29   37    46    56    67    79    92 
 K=3     1    2    4    8   15   26   42   64   93   130   176   232   299   378 
 K=4     1    2    4    8   16   31   57   99  163   256   386   562   794  1093 
 K=5     1    2    4    8   16   32   63  120  219   382   638  1024  1586  2380 
 K=6     1    2    4    8   16   32   64  127  247   466   848  1486  2510  4096 
 K=7     1    2    4    8   16   32   64  128  255   502   968  1816  3302  5812 
 K=8     1    2    4    8   16   32   64  128  256   511  1013  1981  3797  7099 
 K=9     1    2    4    8   16   32   64  128  256   512  1023  2036  4017  7814 
 K=10    1    2    4    8   16   32   64  128  256   512  1024  2047  4083  8100