fkyue 发表于 2021-4-11 22:45:29

求助

求大佬们给咱解析解析下面的代码,希望能详细一点,谢谢各位大佬。
#include <algorithm>
#include <cstdio>
using namespace std;

int s = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

int main()
{       
    do
    {
            if(!s || !s || !s) continue;
            int a = s * 1000 + s * 100 + s * 10 + s;
                int b = s * 1000 + s * 100 + s * 10 + s;
                int c = s * 10 + s;
                if((a - b) * c == 900) printf("(%d-%d)*%d=900\n", a, b, c);

    }while(next_permutation(s, s + 10));

    return 0;
}

lei1996 发表于 2021-4-11 23:55:49

#include <algorithm>
#include <cstdio>
using namespace std;

int s = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

int main()
{      
    do
    {
            if(!s || !s || !s) continue;   //当这几个索引位置的值为0时跳过本次循环
            int a = s * 1000 + s * 100 + s * 10 + s;   //将数组的前四个整数组成一个四位数a
                int b = s * 1000 + s * 100 + s * 10 + s;//后续四个整数组成另一个四位数b
                int c = s * 10 + s;                                          //最后两个整数组成一个两位数c
                if((a - b) * c == 900) printf("(%d-%d)*%d=900\n", a, b, c);    //当(a - b) * c == 900 输出

    }while(next_permutation(s, s + 10));

    return 0;
}


next_permutation(s, s + 10)这里讲一下next_permutation()函数其实就是全排列函数
给个例子自己看,或者自己查查
vector<char> chars = {'a', 'b', 'c'};
do {
    cout << chars << chars << chars << endl;
} while (next_permutation(chars.begin(), chars.end()));
输出为:
abc
acb
bac
bca
cab
cba

fkyue 发表于 2021-4-13 08:07:15

谢谢大佬
页: [1]
查看完整版本: 求助