##c++数对一次性输出##

c++可以通过不加索引来进行数对一次性输出



/*
1:500,0000(6+1/6+1)
2:500,0000(6/6)
3:1,0000(5+1/5+1)
4:500(7/5)
5:50(7/4)
6:5(7/3)||(6+1/1+1)
*/
constexpr auto Nn = 6;
#include 
#include 
#include 
using namespace std;
int perm(int* num, int i, int N);
int main(){
    constexpr auto N = 6,N2=12;
    int num[N + 1]{}, i{ 0 }, num2[N2 + 1]{};
    for(i = 1; i <= N; i++) num[i] = i;
    int tmp6[]{ perm(num, 1, N) },tmp12=perm(num2,1,N2);
    for (int i = 0; i <= sizeof(num2) / sizeof(num2[0])-1;i++) {
        for (int j = 0; j <= 6; j++) {
            cout<6+j];
        }
        cout << char(num2[i]);
    }
    return 0;
}
 
int perm(int* num, int i,int N){ 
    int j, k, tmp{};
    if(i < N){
        for(j = i; j <= N; j++){ 
            tmp = num[j];
            for(k = j; k > i; k--){
                num[k] = num[k-1]; 
            }
            num[i] = tmp;
            perm(num, i+1,N);
            for (k = i; k < j; k++) {
                num[k] = num[k + 1];
            }
            num[j] = tmp;
        }
    }
    else{
        int tmp2[Nn + 1]{};
        for (j = 0; j <= N-1; j++) {
            tmp2[j] = j;
        }
        tmp2[j+1] = 12142 ;
    }
    return tmp2;
}


PS:这个程序是计算彩票6+1的

#include <iostream>
using namespace std;
const int N = 6,N2 = 12;
void perm(int* num, int i, int N);

int main() {
    int num[N]{}, num2[N2]{};
    for (int i = 0; i < N; i++) num[i] = i + 1;
    for (int i = 0; i < N2; i++) num2[i] = i + 1;
    perm(num, 0, N);
    return 0;
}

void perm(int* num, int i, int N) {
    int j, k, tmp;
    if (i < N) {
        for (j = i; j < N; j++) {
            tmp = num[j];
            for (k = j; k > i; k--) {
                num[k] = num[k - 1];
            }
            num[i] = tmp;
            perm(num, i + 1, N);
            for (k = i; k < j; k++) {
                num[k] = num[k + 1];
            }
            num[j] = tmp;
        }
    }
    else {
        for (int i = 0; i < N; i++) {
            cout << num[i];
        }
        cout << num2[i] << endl;
    }
}


这段代码生成了从1到6的整数数组的所有可能排列,然后打印出每个排列后面跟着从1到12的整数数组中的一个值。排列生成是通过递归函数完成的,perm(),它接受三个参数:一个整数数组,一个索引和数组的大小。排列函数通过交换当前索引处的元素与其后面的所有元素来工作,递归调用下一个索引的函数,然后将元素替换回原来的位置。
代码的目的或输出不清楚,也有一些错误,如在main函数中使用perm函数返回的tmp2,perm函数也没有返回任何值。