zoukankan      html  css  js  c++  java
  • functionclass[LeetCode]Permutation Sequence

    废话就不多说了,开始。。。

        每日一道理
    只有启程,才会到达理想和目的地,只有拼搏,才会获得辉煌的成功,只有播种,才会有收获。只有追求,才会品味堂堂正正的人。
    class Solution {
    //decompose the big problem into smaller problem
    private:
    	vector<bool> numT;//keep record of number state, choosen or not
    	vector<int> factT;//save factorial number
    public:
    	string getPermutation(int n, int k) {
    		// Start typing your C/C++ solution below
    		// DO NOT write int main() function
    		Init(n);
    		string ans;
    		getPermutation_Aux(n, k, 1, ans);
    		return ans;
    	}
    
    	void getPermutation_Aux( int n, int k, int selectNow, string& ans) 
    	{
    		if(n == 0) return;
    		if (factT[n-1] >= k)//then the first digit should be pq.front()
    		{
    			int now = selectNow;
    			ans.append(1, now+'0');
    			numT[selectNow] = false;
    			selectNow = SelectMin();
    			getPermutation_Aux(n-1, k, selectNow, ans);
    		}
    		else 
    		{
    			selectNow = MoveForward(selectNow);
    			getPermutation_Aux(n, k-factT[n-1], selectNow, ans);
    		}
    	}
    
    	int SelectMin( ) 
    	{
    		for(int i = 1; i < numT.size(); ++i)
    			if(numT[i]) return i;
    		return -1;
    	}
    
    	int MoveForward(int startIdx ) 
    	{
    		for (int i = startIdx+1; i < numT.size(); ++i)
    			if(numT[i]) return i;
    		return -1;
    	}
    
    	void Init( int n ) 
    	{
    		numT.clear();//very important, without this line, it will be Runtime Error
    		factT.clear();//very important, without this line, it will be Runtime Error
    		numT.resize(n+1, true);
    
    		int tmp = 1;
    		factT.resize(n+1);
    		factT[0] = 1;
    		for(int i = 1; i <= n; ++i)
    		{
    			tmp *= i;
    			factT[i] = tmp;
    		}
    	}
    };

    文章结束给大家分享下程序员的一些笑话语录: 大家喝的是啤酒,这时你入座了。
    你给自己倒了杯可乐,这叫低配置。
    你给自已倒了杯啤酒,这叫标准配置。
    你给自己倒了杯茶水,这茶的颜色还跟啤酒一样,这叫木马。
    你给自己倒了杯可乐,还滴了几滴醋,不仅颜色跟啤酒一样,而且不冒热气还有泡泡,这叫超级木马。
    你的同事给你倒了杯白酒,这叫推荐配置。
    菜过三巡,你就不跟他们客气了。
    你向对面的人敬酒,这叫p2p。
    你向对面的人敬酒,他回敬你,你又再敬他……,这叫tcp。
    你向一桌人挨个敬酒,这叫令牌环。
    你说只要是兄弟就干了这杯,这叫广播。
    有一个人过来向这桌敬酒,你说不行你先过了我这关,这叫防火墙。
    你的小弟们过来敬你酒,这叫一对多。
    你是boss,所有人过来敬你酒,这叫服务器。
    酒是一样的,可是喝酒的人是不同的。
    你越喝脸越红,这叫频繁分配释放资源。
    你越喝脸越白,这叫资源不释放。
    你已经醉了,却说我还能喝,叫做资源额度不足。
    你明明能喝,却说我已经醉了,叫做资源保留。
    喝酒喝到最后的结果都一样
    你突然跑向厕所,这叫捕获异常。
    你在厕所吐了,反而觉得状态不错,这叫清空内存。
    你在台面上吐了,觉得很惭愧,这叫程序异常。
    你在boss面前吐了,觉得很害怕,这叫系统崩溃。
    你吐到了boss身上,只能索性晕倒了,这叫硬件休克。

    --------------------------------- 原创文章 By
    function和class
    ---------------------------------

  • 相关阅读:
    NTP on FreeBSD 12.1
    Set proxy server on FreeBSD 12.1
    win32 disk imager使用后u盘容量恢复
    How to install Google Chrome Browser on Kali Linux
    Set NTP Service and timezone on Kali Linux
    Set static IP address and DNS on FreeBSD
    github博客标题显示不了可能是标题包含 特殊符号比如 : (冒号)
    server certificate verification failed. CAfile: none CRLfile: none
    删除文件和目录(彻底的)
    如何在Curl中使用Socks5代理
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3111524.html
Copyright © 2011-2022 走看看