以下代码亟待改进
#include <iostream>
#include <string>
using namespace std;
bool check_range(string s){
int i = stoi(s);
if (i >= 0 && i <= 255)
return true;
return false;
}
void find_valid(string s, string remain, int *length, int count){
if (count == 4){
if (remain.size() != 0)
return;
cout << s.substr(0, length[0]) << '.' << s.substr(length[0], length[1]) << '.' <<
s.substr(length[0] + length[1], length[2]) << '.' << s.substr(length[0] + length[1] + length[2], length[3]) << endl;
}
for (int i = 1; i <= 3; ++i){
if (remain.size() >= i && check_range(remain.substr(0, i))){
length[count] = i;
find_valid(s, remain.substr(i), length, count + 1);
}
else{
break;
}
}
}
int main(){
string s = "25525510215";
//255.255.10.215
//255.255.102.15
int length[4] = {0};
find_valid(s, s, length, 0);
int ttt = 0;
return 0;
}