int splitArray(vector<int>& nums, int m) { int n = nums.size(); vector<int> sumArr(n + 1); for (int i = 1; i <= n; i++) { sumArr[i] = sumArr[i - 1] + nums[i - 1]; } vector<vector<int>> dp(n, vector<int>(m, -1)); return help(nums, m, 0, dp, sumArr, n); }
void testStringMatch(char * textbuffer, char * newtext, ordGrowthT horspool, ordGrowthT bruteforce, int index){ int i, hFive, hTen, hTwenty, lFive, lTen, lTwenty; string pattern; resultT result; result = (resultT)GetBlock(sizeof * result); /****EXPERIMENT************/ /**********HIGH************/ /* printf("**********************************************************\n"); printf("HORSPOOL\n\n"); printf("Patterns consisting of the 5, 10 and 20 most common letters\nin the text will be generated\neach will be shuffled and retried 50 times.\n"); */ pattern = generatePattern(5, textbuffer); for (i = 0; i < 50; i++){ result->fivepat[i] = horSpool(newtext, randomPattern(pattern)); } pattern = generatePattern(10, textbuffer); for (i = 0; i < 50; i++){ result->tenpat[i] = horSpool(newtext, randomPattern(pattern)); } pattern = generatePattern(20, textbuffer); for (i = 0; i < 50; i++){ result->twentypat[i] = horSpool(newtext, randomPattern(pattern)); } /********LOW*********/ //printf("Patterns consisting of the 5, 10 and 20 LEAST common letters\nin the text will be generated\neach will be shuffled and retried 50 times.\n"); pattern = generateLowPattern(5, textbuffer); for (i = 0; i < 50; i++){ result->lowfivepat[i] = horSpool(newtext, randomPattern(pattern)); } pattern = generateLowPattern(10, textbuffer); for (i = 0; i < 50; i++){ result->lowtenpat[i] = horSpool(newtext, randomPattern(pattern)); } pattern = generateLowPattern(20, textbuffer); for (i = 0; i < 50; i++){ result->lowtwentypat[i] = horSpool(newtext, randomPattern(pattern)); } //printf("MOST COMMON LETTERS\n"); hFive = (sumArr(result->fivepat, 50) / 50); hTen = (sumArr(result->tenpat, 50) / 50); hTwenty = (sumArr(result->twentypat, 50) / 50); /* printf("5 letters: %d\n", hFive); printf("10 letters: %d\n", hTen); printf("20 letters: %d\n", hTwenty); */ horspool->five->nComps[index] = hFive; horspool->ten->nComps[index] = hTen; horspool->twenty->nComps[index] = hTwenty; //printf("LEAST COMMON LETTERS\n"); lFive = (sumArr(result->lowfivepat, 50) / 50); lTen = (sumArr(result->lowtenpat, 50) / 50); lTwenty = (sumArr(result->lowtwentypat, 50) / 50); /* printf("5 letters: %d\n", lFive); printf("10 letters: %d\n", lTen); printf("20 letters: %d\n", lTwenty); */ horspool->lowfive->nComps[index] = lFive; horspool->lowten->nComps[index] = lTen; horspool->lowtwenty->nComps[index] = lTwenty; //printf("**********************************************************\n\n"); /****EXPERIMENT************/ /**********HIGH************/ /* printf("**********************************************************\n"); printf("BRUTEFORCE\n"); printf("Patterns consisting of the 5, 10 and 20 most common letters\nin the text will be generated\neach will be shuffled and retried 50 times.\n"); */ pattern = generatePattern(5, textbuffer); for (i = 0; i < 50; i++){ result->fivepat[i] = bruteForce(newtext, randomPattern(pattern)); } pattern = generatePattern(10, textbuffer); for (i = 0; i < 50; i++){ result->tenpat[i] = bruteForce(newtext, randomPattern(pattern)); } pattern = generatePattern(20, textbuffer); for (i = 0; i < 50; i++){ result->twentypat[i] = bruteForce(newtext, randomPattern(pattern)); } /********LOW*********/ //printf("Patterns consisting of the 5, 10 and 20 LEAST common letters\nin the text will be generated\neach will be shuffled and retried 50 times.\n"); pattern = generateLowPattern(5, textbuffer); for (i = 0; i < 50; i++){ result->lowfivepat[i] = bruteForce(newtext, randomPattern(pattern)); } pattern = generateLowPattern(10, textbuffer); for (i = 0; i < 50; i++){ result->lowtenpat[i] = bruteForce(newtext, randomPattern(pattern)); } pattern = generateLowPattern(20, textbuffer); for (i = 0; i < 50; i++){ result->lowtwentypat[i] = bruteForce(newtext, randomPattern(pattern)); } //printf("MOST COMMON LETTERS\n"); hFive = (sumArr(result->fivepat, 50) / 50); hTen = (sumArr(result->tenpat, 50) / 50); hTwenty = (sumArr(result->twentypat, 50) / 50); /* printf("5 letters: %d\n", hFive); printf("10 letters: %d\n", hTen); printf("20 letters: %d\n", hTwenty); */ bruteforce->five->nComps[index] = hFive; bruteforce->ten->nComps[index] = hTen; bruteforce->twenty->nComps[index] = hTwenty; //printf("LEAST COMMON LETTERS\n"); lFive = (sumArr(result->lowfivepat, 50) / 50); lTen = (sumArr(result->lowtenpat, 50) / 50); lTwenty = (sumArr(result->lowtwentypat, 50) / 50); /* printf("5 letters: %d\n", lFive); printf("10 letters: %d\n", lTen); printf("20 letters: %d\n", lTwenty); */ bruteforce->lowfive->nComps[index] = lFive; bruteforce->lowten->nComps[index] = lTen; bruteforce->lowtwenty->nComps[index] = lTwenty; }