1. 程式人生 > >演算法提高 現代詩如蚯蚓

演算法提高 現代詩如蚯蚓

問題描述

  現代詩如蚯蚓   斷成好幾截都不會死   字串斷成好幾截   有可能完全一樣   請編寫程式   輸入字串   輸出該字串最多能斷成多少截完全一樣的子串

輸入格式

  一行,一個字串

輸出格式

  一行,一個正整數表示該字串最多能斷成的截數

樣例輸入

abcabcabcabc

樣例輸出

4

樣例說明

  最多能斷成四個”abc”,也就是abc重複四遍便是原串   同時也能斷成兩個”abcabc”   最壞情況是斷成一個原串”abcabcabcabc”

資料規模和約定

  字串長度<=1000

#include <iostream>
#include <string>
using namespace std;
int main() {
    string s;
    cin >> s;
    int len = s.length();
    int flag = 0;
    int ans = len;

    for(int i = 1; i < len/2; i++) {
        if(len % i)
            continue;

        flag = 0;
        string t1, t2;
        t1 = s.substr(0, i);

        for(int j = i; j < len; j = j + i) {
            t2 = s.substr(j, i);
            if(t2 != t1) {
                flag = 1;
                break;
            }
        }
        if(flag == 0)
            ans = ans < i ? ans : i;
    }
    cout << len / ans;
    return 0;
}