元素排列组合,求组合结果的加减组合表达式及对应结果,以9个元素为例(Matlab,C++)

matlab:

g1 = sym('g1','real'); %定义x为实数变量
g2 = sym('g2','real');
g3 = sym('g3','real');
g4 = sym('g4','real');
g5 = sym('g5','real');
g6 = sym('g6','real');
g7 = sym('g7','real');
g8 = sym('g8','real');
g9 = sym('g9','real');
data = [1,2,3,4,5,6,7,8,9];
data_1 = [g1,g2,g3,g4,g5,g6,g7,g8,g9];
OUTC92 = [];
for i = data(1):data(end)
    for j = data(2):data(end)
            if j>i
                 OUTC92 = [OUTC92;data_1(i),data_1(j)];
            end
      end
end
disp(OUTC92);
OUTC93 = [];
for i = data(1):data(end)
    for j = data(2):data(end)
        for k = data(3):data(end)
            if j>i
                if k>j
                    OUTC93 = [OUTC93;data_1(i),data_1(j),data_1(k)];
                end
            end
        end
    end
end
disp(OUTC93);


OUTC94 = [];
for i = data(1):data(end)
    for j = data(2):data(end)
        for k = data(3):data(end)
            for l = data(4):data(end)
            if j>i
                if k>j
                    if l>k
                    OUTC94 = [OUTC94;data_1(i),data_1(j),data_1(k),data_1(l)];
                      end
                   end
                end
            end
        end
    end
end
disp(OUTC94);
OUTC95 = [];
for i = data(1):data(end)
    for j = data(2):data(end)
        for k = data(3):data(end)
            for l = data(4):data(end)
                for m = data(5):data(end)
                    if j>i
                        if k>j
                            if l > k
                                if m > l
                                    OUTC95 = [OUTC95;data_1(i),data_1(j),data_1(k),data_1(l),data_1(m)];
                                end
                            end
                        end
                    end
                end
            end
        end
    end
end
disp(OUTC95);

OUTC96 = [];
for i = data(1):data(end)
    for j = data(2):data(end)
        for k = data(3):data(end)
            for l = data(4):data(end)
                for m = data(5):data(end)
                    for o=data(6):data(end)
                    if j>i
                        if k>j
                            if l > k
                                if m > l
                                    if o>m
                                    OUTC96 = [OUTC96;data_1(i),data_1(j),data_1(k),data_1(l),data_1(m),data_1(o)];
                                    end
                                end
                            end
                        end
                    end
                    end
                end
            end
        end
    end
end
disp(OUTC96);

OUTC97 = [];
for i = data(1):data(end)
    for j = data(2):data(end)
        for k = data(3):data(end)
            for l = data(4):data(end)
                for m = data(5):data(end)
                    for o=data(6):data(end)
                        for p=data(7):data(end)
                    if j>i
                        if k>j
                            if l > k
                                if m > l
                                    if o>m
                                        if p>o
                                    OUTC97 = [OUTC97;data_1(i),data_1(j),data_1(k),data_1(l),data_1(m),data_1(o),data_1(p)];
                                        end
                                    end
                                   end
                                end
                            end
                        end
                    end
                    end
                end
            end
        end
    end
end
disp(OUTC97);

OUTC98 = [];
for i = data(1):data(end)
    for j = data(2):data(end)
        for k = data(3):data(end)
            for l = data(4):data(end)
                for m = data(5):data(end)
                    for o=data(6):data(end)
                        for p=data(7):data(end)
                            for q=data(8):data(end)
                    if j>i
                        if k>j
                            if l > k
                                if m > l
                                    if o>m
                                        if p>o
                                            if q>p
                                    OUTC98 = [OUTC98;data_1(i),data_1(j),data_1(k),data_1(l),data_1(m),data_1(o),data_1(p),data_1(q)];
                                            end
                                        end
                                    end
                                end
                            end
                        end
                    end
                            end
                        end
                    end
                end
            end
        end
    end
end
                                           
disp(OUTC98);

OUTC99 = [];
for i = data(1):data(end)
    for j = data(2):data(end)
        for k = data(3):data(end)
            for l = data(4):data(end)
                for m = data(5):data(end)
                    for o=data(6):data(end)
                        for p=data(7):data(end)
                            for q=data(8):data(end)
                                for r=data(9):data(end)
                    if j>i
                        if k>j
                            if l > k
                                if m > l
                                    if o>m
                                        if p>o
                                            if q>p
                                                if r>p
                                    OUTC99 = [OUTC99;data_1(i),data_1(j),data_1(k),data_1(l),data_1(m),data_1(o),data_1(p),data_1(q),data_1(r)];
                                                end
                                            end
                                            end
                                        end
                                    end
                                end
                            end
                        end
                    end
                            end
                        end
                    end
                end
            end
        end
    end
end
                                           
disp(OUTC98);


x1=[-1 1]; 
x2=[-1 1];
[x2,x1] = ndgrid(x2,x1);
C92=[x1(:) x2(:)];
% 36是9中取2的排列组合数
% 4是2个数加减组合共有四种情况
% outcomeC92第一行就是:9中取2的排列组合第一种情况的加减组合,这种情况下共有2的2次方种加减组合
for i_92= 1:36
    for j_92 = 1:4
        data_92 = OUTC92(i_92,:);
        outcomeC92(i_92,j_92) = data_92*C92(j_92,:)';
        FORM92{i_92,j_92} = char(outcomeC92(i_92,j_92));
    end
end

x1=[-1 1]; 
x2=[-1 1];
x3=[-1 1];
[x3,x2,x1] = ndgrid(x3,x2,x1);
C93=[x1(:) x2(:) x3(:)];
for i_93= 1:84
    for j_93 = 1:8
        data_93 = OUTC93(i_93,:);
        outcomeC93(i_93,j_93) = data_93*C93(j_93,:)';
        FORM93{i_93,j_93} = char(outcomeC93(i_93,j_93));
    end
end

x1=[-1 1]; 
x2=[-1 1];
x3=[-1 1];
x4=[-1 1];
[x4,x3,x2,x1] = ndgrid(x4,x3,x2,x1);
C94=[x1(:) x2(:) x3(:) x4(:)];
for i_94= 1:126
    for j_94 = 1:16
        data_94 = OUTC94(i_94,:);
        outcomeC94(i_94,j_94) = data_94*C94(j_94,:)';
        FORM94{i_94,j_94} = char(outcomeC94(i_94,j_94));
    end
end

x1=[-1 1]; 
x2=[-1 1];
x3=[-1 1];
x4=[-1 1];
x5=[-1 1];
[x5,x4,x3,x2,x1] = ndgrid(x5,x4,x3,x2,x1);
C95=[x1(:) x2(:) x3(:) x4(:) x5(:)];
for i_95= 1:126
    for j_95 = 1:32
        data_95 = OUTC95(i_95,:);
        outcomeC95(i_95,j_95) = data_95*C95(j_95,:)';
        FORM95{i_95,j_95} = char(outcomeC95(i_95,j_95));
    end
end

x1=[-1 1]; 
x2=[-1 1];
x3=[-1 1];
x4=[-1 1];
x5=[-1 1];
x6=[-1 1];
[x6,x5,x4,x3,x2,x1] = ndgrid(x6,x5,x4,x3,x2,x1);
C96=[x1(:) x2(:) x3(:) x4(:) x5(:) x6(:)];
for i_96= 1:84
    for j_96 = 1:64
        data_96 = OUTC96(i_96,:);
        outcomeC96(i_96,j_96) = data_96*C96(j_96,:)';
        FORM96{i_96,j_96} = char(outcomeC96(i_96,j_96));
    end
end

x1=[-1 1]; 
x2=[-1 1];
x3=[-1 1];
x4=[-1 1];
x5=[-1 1];
x6=[-1 1];
x7=[-1 1];
[x7,x6,x5,x4,x3,x2,x1] = ndgrid(x7,x6,x5,x4,x3,x2,x1);
C97=[x1(:) x2(:) x3(:) x4(:) x5(:) x6(:) x7(:)];
for i_97= 1:36
    for j_97 = 1:128
        data_97 = OUTC97(i_97,:);
        outcomeC97(i_97,j_97) = data_97*C97(j_97,:)';
        FORM96{i_97,j_97} = char(outcomeC97(i_97,j_97));
    end
end

x1=[-1 1]; 
x2=[-1 1];
x3=[-1 1];
x4=[-1 1];
x5=[-1 1];
x6=[-1 1];
x7=[-1 1];
x8=[-1 1];
[x8,x7,x6,x5,x4,x3,x2,x1] = ndgrid(x8,x7,x6,x5,x4,x3,x2,x1);
C98=[x1(:) x2(:) x3(:) x4(:) x5(:) x6(:) x7(:) x8(:)];
for i_98= 1:9
    for j_98 = 1:256
        data_98 = OUTC98(i_98,:);
        outcomeC98(i_98,j_98) = data_98*C98(j_98,:)';
        FORM96{i_98,j_98} = char(outcomeC98(i_98,j_98));
    end
end

x1=[-1 1]; 
x2=[-1 1];
x3=[-1 1];
x4=[-1 1];
x5=[-1 1];
x6=[-1 1];
[x6,x5,x4,x3,x2,x1] = ndgrid(x6,x5,x4,x3,x2,x1);
C96=[x1(:) x2(:) x3(:) x4(:) x5(:) x6(:)];
for i_96= 1:84
    for j_96 = 1:64
        data_96 = OUTC96(i_96,:);
        outcomeC96(i_96,j_96) = data_96*C96(j_96,:)';
        FORM96{i_96,j_96} = char(outcomeC96(i_96,j_96));
    end
end


n=[所求数值];
F92=nchoosek(n,2);
F93=nchoosek(n,3);
F94=nchoosek(n,4);
F95=nchoosek(n,5);
F96=nchoosek(n,6);
F97=nchoosek(n,7);
F98=nchoosek(n,8);
F99=nchoosek(n,9);

for i_92= 1:36
    for j_92 = 1:4
        CAL92 = F92(i_92,:);
        FINAL92(i_92,j_92) = CAL92*C92(j_92,:)';
    end
end

for i_93= 1:84
    for j_93= 1:8
        CAL93 = F93(i_93,:);
        FINAL93(i_93,j_93) = CAL93*C93(j_93,:)';
    end
end

for i_94= 1:126
    for j_94 = 1:16
        CAL94 = F94(i_94,:);
        FINAL94(i_94,j_94) = CAL94*C94(j_94,:)';
    end
end

for i_95= 1:126
    for j_95 = 1:32
        CAL95 = F95(i_95,:);
        FINAL95(i_95,j_95) = CAL95*C95(j_95,:)';
    end
end

for i_96= 1:84
    for j_96 = 1:64
        CAL96 = F96(i_96,:);
        FINAL96(i_96,j_96) = CAL96*C96(j_96,:)';
    end
end


for i_95= 1:126
    for j_95 = 1:32
        CAL95 = F95(i_95,:);
        FINAL95(i_95,j_95) = CAL95*C95(j_95,:)';
    end
end
for i_99= 1:1
    for j_99 = 1:512
        CAL99 = F99(i_99,:);
        FINAL99(i_99,j_99) = CAL99*C99(j_99,:)';
    end
end

RESULT92=abs(1./FINAL92);
RESULT93=abs(1./FINAL93);
RESULT94=abs(1./FINAL94);
RESULT95=abs(1./FINAL95);
RESULT96=abs(1./FINAL96);

RESULT98=abs(1./FINAL98);
RESULT99=abs(1./FINAL99);


for i=1:9;
    if i/3=1
        E92=C
        if i/3=2
            E92=B
            if i/3=3
                E92=A
            end
        end
    end
end
  

QW6=FORM96(:);
QW6_1=FINAL96(:);
QW6_2=RESULT96(:);

C++:

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main()
{
        //std::cout << "Hello World!\n";
        int a[9] = {1,2,3,4,5,6,7,8,9};
        vector<int> value2, value3, value4, value5;
        vector<string> expre2, expre3, expre4, expre5;
        
        for (int i=0; i<9; i++)
        {
            for (int j = i+1;j<9;j++)
            {
                value2.push_back(a[i]+a[j]);
                value2.push_back(a[i]-a[j]);
                expre2.push_back(to_string(a[i]) + "+" + to_string(a[j]));
                expre2.push_back(to_string(a[i]) + "-" + to_string(a[j]));
                
                int count2 = value2.size();
                for (int y=0; y<count2; y++)
                    cout << expre2.at(y) << "=" << value2.at(y) << endl;
                    
                for    (int k=j+1; k<9; k++)
                {
                    for (auto iter = value2.begin(); iter != value2.end(); iter++)
                    {
                        value3.push_back((*iter) + a[k]);
                        value3.push_back((*iter) - a[k]);
                    }
                    
                    for (auto iter = expre2.begin(); iter != expre2.end(); iter++)
                    {
                        value3.push_back((*iter) + "+" + to_string(a[k]));
                        value3.push_back((*iter) + "-" + to_string(a[k]));
                    }
                    
                    int count3 = value3.size();
                    for (int y=0; y<count3; y++)
                        cout << expre3.at(y) << "=" << value3.at(y) << endl;                    
                    
                    for    (int m=k+1; m<9; m++)
                    {
                        for (auto iter = value3.begin(); iter != value3.end(); iter++)
                        {
                            value4.push_back((*iter) + a[m]);
                            value4.push_back((*iter) - a[m]);
                        }
                        
                        for (auto iter = expre3.begin(); iter != expre3.end(); iter++)
                        {
                            value4.push_back((*iter) + "+" + to_string(a[m]));
                            value4.push_back((*iter) + "-" + to_string(a[m]));
                        }
                        
                        int count4 = value4.size();
                        for (int y=0; y<count4; y++)
                            cout << expre4.at(y) << "=" << value4.at(y) << endl;                            
                        
                        for    (int n=m+1; n<9; n++)
                        {
                            for (auto iter = value4.begin(); iter != value4.end(); iter++)
                            {
                                value5.push_back((*iter) + a[n]);
                                value5.push_back((*iter) - a[n]);
                            }
                            
                            for (auto iter = expre4.begin(); iter != expre4.end(); iter++)
                            {
                                value5.push_back((*iter) + "+" + to_string(a[n]));
                                value5.push_back((*iter) + "-" + to_string(a[n]));
                            }
                            
                            int count5 = value5.size();
                            for (int y=0; y<count5; y++)
                                cout << expre5.at(y) << "=" << value5.at(y) << endl;                            
                            
                            value5.clear();
                            exprer5.clear();
                        }                        
                        value4.clear();
                        exprer4.clear();                        
                    }
                    value3.clear();
                    exprer3.clear();                    
                }
                value2.clear();
                exprer2.clear();                        
            }
        }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值