int main(void){
	
	int n,k;
	while(scanf("%d%d",&n,&k)!=EOF&&n>0&&k>0){
		char *result=getPermutation(n,k);
		
		puts(result);
	}
	return 0;
}
Exemple #2
0
 vector<vector<int>> permuteUnique(vector<int>& nums) 
 {
     vector< vector<int> > permutations;
     if (nums.empty())
     {
         return permutations;
     }
     sort(nums.begin(), nums.end());
     getPermutation(nums, 0, permutations);
     return permutations;
 }
Exemple #3
0
int main(int arg, char *argv[]) {
    // insert code here...
    printf("LeetCode 060 Permutation Sequence, C ...\n\n");

    int n = 3;
    int k = 6;
    char *s = getPermutation(n, k);
    printf("%s\n", s);

    return 0;
}
Exemple #4
0
int main() {
	{
		int n = 4;
		int factor = 1;
		for (int i = 2; i <= n; ++i) factor *= i;
		for (int i = 0; i < factor; ++i) {
			char* res = getPermutation(n, i);
			printf("%s\n", res);
			free(res);
		}
		puts("");
	}
	{
		char* res = getPermutation(8, 8590);
		printf("%s\n", res);
		free(res);
		puts("");
	}
	system("PAUSE");
	return 0;
}
Exemple #5
0
 vector<vector<int>> permute(vector<int>& nums) {
     vector<vector<int>> res;
     int n = nums.size();
     if (n == 0) {
         return res;
     }
     
     vector<int> perm;
     getPermutation(nums, 0, n, perm, res);
     
     return res;
 }
Exemple #6
0
 void getPermutation(vector<int>& nums, int start, int end,
                     vector<int>& perm, vector<vector<int>>& res) {
     if (perm.size() == end) {
         res.push_back(perm);
     }
     
     for (int i = start; i < end; i++) {
         swap(nums[start], nums[i]);
         perm.push_back(nums[start]);
         getPermutation(nums, start + 1, end, perm, res);
         perm.pop_back();
         swap(nums[start], nums[i]);
     }
 }
Exemple #7
0
Fichier : 2207.c Projet : saki45/OJ
int main() {
    int N, orders[120][5], i, j, p, q, tmp, tmpi, rank[120], curMin, curMinIdx, in[100][5];
    char str[120][5];
    getPermutation(str);
    generateOrders(orders, str);

    char buf[10];
    while(scanf("%d", &N) && N) {
        for(i=0; i<N; i++) {
            scanf("%s", buf);
            tmp = 0;
            for(p=0; p<5; p++)
                in[i][buf[p]-'A'] = p;
        }

        memset(rank, 0, sizeof(rank));

        for(i=0; i<120; i++) {
            for(j=0; j<N; j++) {
                tmp = 0;
                for(p=0; p<4; p++) {
                    for(q=p+1; q<5; q++) {
                        tmpi = (orders[i][p]-orders[i][q])*(in[j][p]-in[j][q]);
                        if(tmpi<0)
                            tmp++;
                    }
                }
                rank[i] += tmp;
            }
        }

        curMin = rank[0];
        curMinIdx = 0;
        for(i=1; i<120; i++) {
            if(curMin > rank[i]) {
                curMin = rank[i];
                curMinIdx = i;
            }
        }

        for(i=0; i<5; i++)
            printf("%c", str[curMinIdx][i]);
        printf(" is the median ranking with value %d.\n", curMin);
    }
    return 0;
}
Ogre::Technique* GBufferSchemeHandler::handleSchemeNotFound(unsigned short schemeIndex, 
		const Ogre::String& schemeName, Ogre::Material* originalMaterial, unsigned short lodIndex, 
		const Ogre::Renderable* rend)
{
	Ogre::MaterialManager& matMgr = Ogre::MaterialManager::getSingleton();
	Ogre::String curSchemeName = matMgr.getActiveScheme();
	matMgr.setActiveScheme(Ogre::MaterialManager::DEFAULT_SCHEME_NAME);
	Ogre::Technique* originalTechnique = originalMaterial->getBestTechnique(lodIndex, rend);
	matMgr.setActiveScheme(curSchemeName);

	Ogre::Technique* gBufferTech = originalMaterial->createTechnique();
	gBufferTech->removeAllPasses();
	gBufferTech->setSchemeName(schemeName);

	Ogre::Technique* noGBufferTech = originalMaterial->createTechnique();
	noGBufferTech->removeAllPasses();
	noGBufferTech->setSchemeName("NoGBuffer");

	for (unsigned short i=0; i<originalTechnique->getNumPasses(); i++)
	{
		Ogre::Pass* originalPass = originalTechnique->getPass(i);
		PassProperties props = inspectPass(originalPass, lodIndex, rend);
		
		if (!props.isDeferred)
		{
			//Just copy the technique so it gets rendered regularly
			Ogre::Pass* clonePass = noGBufferTech->createPass();
			*clonePass = *originalPass;
			continue;
		}

		Ogre::Pass* newPass = gBufferTech->createPass();
		MaterialGenerator::Perm perm = getPermutation(props);

		const Ogre::MaterialPtr& templateMat = mMaterialGenerator.getMaterial(perm);
    	
		//We assume that the GBuffer technique contains only one pass. But its true.
		*newPass = *(templateMat->getTechnique(0)->getPass(0));
		fillPass(newPass, originalPass, props);    
	}
    
	return gBufferTech;
}
Exemple #9
0
int main(int argc, char** argv) {
    struct timeval tvStart, tvEnd;
    char* ret;
    int n = atoi(argv[1]);
    int k = atoi(argv[2]);
    gettimeofday(&tvStart, NULL);
    ret = getPermutation(n, k);
    gettimeofday(&tvEnd, NULL);

    printf("getPermutation(%d, %d): '%s'\n", n, k, ret);
    int ds = tvEnd.tv_sec - tvStart.tv_sec;
    int dus = tvEnd.tv_usec - tvStart.tv_usec;
    if (dus < 0) {
        ds--;
        dus += 1000000;
    }
    printf("Time %d.%06d, getPermutation\n", ds, dus);
    return 0;
}
Exemple #10
0
    void getPermutation(vector<int> &_nums, int _begin, vector< vector<int> > &_permutations)
    {
        const int numsSize = _nums.size();
        if (_begin == numsSize - 1)
        {
            _permutations.push_back(_nums);
            return;
        }

        for (int curInd = _begin; curInd < numsSize; curInd++)
        {
            if (!isSwap(_nums, _begin, curInd))
            {
                continue;
            }
            swap(_nums[_begin], _nums[curInd]);
            getPermutation(_nums, _begin + 1, _permutations);
            swap(_nums[_begin], _nums[curInd]);
        }
    }
Scheme GtGenerator::generate(const TruthTable& table)
{
    n = 0;

    float time = 0;
    {
        AutoTimer timer(&time);

        checkPermutationValidity(table);
        tie(n, permutation) = getPermutation(table);
    }

    debugLog("GtGenerator::generate()-dump-permutation-creation-time", [=](ostream& out)->void
    {
        out << "Permutation creation time: ";
        out << setiosflags(ios::fixed) << setprecision(2) << time / 1000;
        out << " sec" << endl;
    });

    debugLog("GtGenerator::generate()-dump-permutation", [&](ostream& out)->void
    {
        out << "Permutation (non-fixed points number is " << permutation.getElementCount() << ")\n";
        out << permutation << endl;
    });

    Scheme scheme;
    if (permutation.length())
    {
        Scheme::iterator targetIter = scheme.end();

        shared_ptr<PartialGtGenerator> partialGenerator(new PartialGtGenerator());
        partialGenerator->setPermutation(permutation, n);
        partialGenerator->prepareForGeneration();

        while (partialGenerator)
            partialGenerator = reducePermutation(partialGenerator, n, &scheme, &targetIter);
    }

    return scheme;
}