与并不是升级版的版本一样的解法…利用STL中的 next_permutation 全排列算法可轻松得到答案
注意判断的更改,详情见代码
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std ;
int main(){
int a , b , c ;
cin >> a >> b >> c ;
int arr[10] = {1,2,3,4,5,6,7,8,9} ;
bool check = false ;
do{
int num1 = arr[0] * 100 + arr[1] * 10 + arr[2] ;
int num2 = arr[3] * 100 + arr[4] * 10 + arr[5] ;
int num3 = arr[6] * 100 + arr[7] * 10 + arr[8] ;
if ( a * num2 == b * num1 && c * num2 == b * num3 ){
cout << num1 << " " << num2 << " " << num3 << endl ;
check = true ;
}
}while(next_permutation(arr , arr + 9)) ;
if ( !check ){
cout << "No!!!" << endl ;
}
return 0 ;
}

本文介绍了一种利用C++ STL中的next_permutation算法解决特定数学排列问题的方法。通过示例代码展示了如何判断并输出满足特定条件的三位数组合,实现了a*num2==b*num1且c*num2==b*num3的条件下的数字排列。
2317

被折叠的 条评论
为什么被折叠?



