P1618 三连击(升级版)<洛谷> (C++) (NEXT_PERMUTATION)

与并不是升级版的版本一样的解法…利用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 ;
}

猜你喜欢

转载自www.cnblogs.com/Cantredo/p/9693186.html