随手练——洛谷-P1151(枚举与暴力搜索)

  •  枚举

#include <iostream>
using namespace std;

int main() {
    int k, flag = 0;
    cin >> k;
    for (int i = 100; i < 300; i++) {
        if (i%k == 0) {
            int p = (i % 100) * 10;
            for (int j = 0; j <10; j++) {
                if ((p + j) % k == 0) {
                    int q = ((p + j) % 100) * 10;
                    for (int l = 0; l < 10; l++) {
                        if ((l + q) % k == 0) {
                            cout << i << j << l << endl; 
                            flag = 1;
                        }
                    }
                }
            }
        }
    }
    if (300 % k == 0) {
        cout << 30000 << endl;
        flag = 1;
    }
    if (!flag) cout << "No" << endl;
    return 0;
}
View Code
  • 暴力搜索

#include <iostream>
using namespace std;

int main() {
    int k, flag = 0;
    cin >> k;
    for (int i = 10000; i <= 30000; i++) {
        int p = i / 100;
        if (p%k == 0) {
            int q = p % 100 * 10 + i % 100 / 10;
            if (q%k == 0) {
                int t = q % 100 * 10 + i % 10;
                if (t%k == 0) {
                    cout << i << endl;
                        flag = 1;
                }
            }
        }
    }
    if (!flag) cout << "No" << endl;
    return 0;
}
View Code

范围小的时候,枚举与搜索做的运算差不多时,枚举不一定比暴力搜索快,而且暴力搜索好写,写的也快,不容易遗漏出错。

但像这种题目随手练——洛谷-P1008 三连击,就只能枚举,暴力是跑不出来的。

posted @ 2019-02-11 13:58  czc1999  阅读(138)  评论(0编辑  收藏  举报