Пример #1
0
    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);
    }
Пример #2
0
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;

}