前N位数字能被N整除

    xiaoxiao2021-03-25  169

    题目:1~9的9个数字,每个数字只能出现一次,要求这样一个9位的整数:其第一位 能被1整除,前两位能被2整除,前三位能被3整除……依次类推,前9位能被9整除。

    枚举法:

    #include <iostream> #include <vector> using namespace std; bool used[10]; vector<long long int> v; void dfs(int k, long long int a){ 判断是否可以被位数(k)整除,不可则结束 if(k != 0 && a% k != 0){ return; } //第9位也符合条件则将数A保存起来 if(k == 9){ v.push_back(a); return; } for(int i=1; i<=9; i++){ //1-9这九个数,没使用过则赋值为1,进行下一轮递归 if(!used[i]){ used[i] = 1; dfs(k+1, a*10+i); used[i] = 0; } } } int main(){ dfs(0, 0); for(int i=0; i<v.size(); i++){ cout<<v[i]<<endl; } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-22000.html

    最新回复(0)