IP地址组合计数((模拟)TJU 保研上机)

IP地址组合计数

#include<bits/stdc++.h>
using namespace std;

int n, res;
string s;

bool check(string s){
    if(s.size() == 0 || s.size() > 3) return false;
    if(s[0] == '0' && s.size() > 1) return false;
    int t = stoi(s);
    return t >= 0 && t <= 255;
}
void dfs(){
    for(int i = 1; i < s.size(); ++i){
        for(int j = i + 1; j < s.size(); ++j){
            for(int k = j + 1; k < s.size(); ++k){
                string a = s.substr(0, i);
                string b = s.substr(i, j - i);
                string c = s.substr(j, k - j);
                string d = s.substr(k);
                if(check(a) && check(b) && check(c) && check(d)) ++res;
            }
        }
    }
}
signed main(){
    cin >> n;

    while(n--){
        res = 0;
        cin >> s;
        dfs();

        cout << res << "\n";
    }
    return 0;
}
posted @ 2025-07-31 01:06  awei040519  阅读(9)  评论(0)    收藏  举报