diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6_dfs.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6_dfs.cpp new file mode 100644 index 0000000..0d2750e --- /dev/null +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6_dfs.cpp @@ -0,0 +1,28 @@ +#include +using namespace std; + +/* +测试用例: +5 +12321 + +*/ +int cnt = 1; + +// 递归写法 +void dfs(string s) { + int p; + for (p = s.size() - 1; p; p--) + if (s[0] != s[p]) break; + string t = s.substr(1, p); + if (t.size()) cnt++, dfs(t); +} + +int main() { + int n; + string s; + cin >> n >> s; + dfs(s); + cout << cnt << endl; + return 0; +} \ No newline at end of file diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6_while.cpp similarity index 67% rename from TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp rename to TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6_while.cpp index 83ad612..3daf02a 100644 --- a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6.cpp +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/6_while.cpp @@ -23,15 +23,6 @@ void cut(string s) { } } -// 递归写法 -void dfs(string s) { - int p; - for (p = s.size() - 1; p; p--) - if (s[0] != s[p]) break; - string t = s.substr(1, p); - if (t.size()) cnt++, dfs(t); -} - int main() { int n; string s; diff --git a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/hags.cpp b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/hags.cpp index acedda5..2c26287 100644 --- a/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/hags.cpp +++ b/TangDou/LanQiaoBei/ZhongGaoJi/LanQiao15STEMA202401/hags.cpp @@ -3,8 +3,8 @@ using namespace std; const int N = 10010; int a[N]; int sum, avg, total; -int n; int main() { + int n; cin >> n; for (int i = 1; i <= n; i++) { cin >> a[i]; @@ -15,24 +15,25 @@ int main() { exit(0); } avg = sum / n; + for (int i = 1; i <= n; i++) { int d = a[i] - avg; total += abs(d); - int j = i + 1; - while (d != 0 && j <= n) { + for (int j = 1 + i; j <= n; j++) { if (d > 0 && a[j] < avg) { int x = min(d, avg - a[j]); a[i] -= x; a[j] += x; d -= x; } - if (d < 0 && a[j] > avg) { - int x = min(-d,a[j]-avg); + + if (d < 0 && a[j] > avg) { + int x = min(d, a[j]-avg); a[i] += x; a[j] -= x; d += x; } - j++; + if (d == 0) break; } } cout << total << endl;