提交时间:2023-11-18 10:25:15

运行 ID: 111099

#include<bits/stdc++.h> using namespace std; int n; string s,res[5]; void dfs(int x,string now,int su,int cnt){ if (cnt >= 3){ int all = res[0].size() + res[1].size() + res[2].size() + n - x; //cout<<"all:"<<all<<" n:"<<n<<'\n'; if (all != n){ return ; } //cout<<res[0]<<'.'<<res[1]<<'.'<<res[2]<<'\n'; bool qdl = true; int sum = 0; if (x >= n){ return ; } for (int i = x;i < n;i++){ if (s[i] == '0' && qdl && n - 1 - x >= 1){ return ; } else{ qdl = false; } sum = sum * 10 + s[i] - '0'; if (sum > 255 || sum < 0){ return ; } } for (int i = 0;i < 3;i++){ cout<<res[i]<<'.'; } for (int i = x;i < n;i++){ cout<<s[i]; } cout<<'\n'; return ; } if (x >= n){ return ; } if (now == "0"){ res[cnt] = now; dfs(x + 1,"" + s[x],0,cnt + 1); res[cnt] = ""; return ; } su = su * 10 + s[x] - '0'; if (su >= 0 && su <= 255){ dfs(x + 1,now + s[x],su,cnt); res[cnt] = now + s[x]; dfs(x + 1,"",0,cnt + 1); res[cnt] = ""; } else{ return ; } } signed main(){ cin>>s; n = s.size(); dfs(0,"",0,0); return 0; }