2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Quid est regressus?
Cum certum nodi quaerentes, si nodi currente (et eius sub-nodis) scopum non quaesitum invenimus, ad nodi primigeniam inquisitionem perseuendam recidimus, ac modificatum nodi hodiernae statum restituimus.Memento duorum apicibus:Prima est ut status referat (&), secunda est ut omnes status modificationes mutent post expletum recursum.Duae fere condiciones sunt in modificationibus regressionis. Una est mutare partem ultimam emissi, ut permutatio et coniunctio;Memento, verbi gratia, quaerendo chordam in matrice.
topicDatum ordinata sine duplicata numeris
nums
Redi adomnia possibilia permutationes .potesin omni ordineRedde responde.Exemplum 1:
输入:nums = [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]Exemplum II:
输入:nums = [0,1] 输出:[[0,1],[1,0]]Exemplum III:
输入:nums = [1] 输出:[[1]]innuere;
1 <= nums.length <= 6
-10 <= nums[i] <= 10
nums
Omnes integri ininter se differentes
respondereAd output omnes compositae digestae ordinatae, uti possumus REGRESSUS methodus.Primo determinat positionem, et deinde cum unaquaque subsequenti positione eam commutant. Post mutatum, i ad proximum locum. Tunc post hanc seriem graduum peractam, substituta reponere debes. id est regressus modus.![]()
- class Solution {
- public:
- vector<vector<int>> permute(vector<int>& nums) {
- vector<vector<int>> ans;
- back(nums,0,ans);
- return ans;
- }
- void back(vector<int>& nums,int n,vector<vector<int>>& ans){
- int i;
- if(n==nums.size()-1)
- ans.push_back(nums);
- for(i=n;i<nums.size();i++){
- swap(nums[i],nums[n]);
- back(nums,n+1,ans);
- swap(nums[i],nums[n]);
- }
- }
- };
topic
Datum duobus integris
n
etk
Redi range[1, n]
omnia possibilia suntk
concursus numerorum.vos can premerequis ordoRedde responde.
Exemplum 1:
输入:n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ]Exemplum II:
输入:n = 1, k = 1 输出:[[1]]innuere;
1 <= n <= 20
1 <= k <= n
题解
Pone numera et computa numerum singulorum. Hoc differt a superioribus, quae erant permutationes et compositiones. Haec quasi lectio instructa est.
Incipiens ab 1-n, adiectionem instrue aciem ad eventus cuiusque temporis reponendos. Numera dynamice mutat. Count-- post REGRESSUS.
class Solution { public: vector<vector<int>> combine(int n, int k) { vector<vector<int>> ans; vector<int> c(k,0); int count; dfs(n,k,1,ans,c,count); return ans; } void dfs(int n,int k,int level,vector<vector<int>>& ans,vector<int>& c,int& count){ int i; if(count==k){ ans.push_back(c); return ; } for(i=level;i<=n;i++){ c[count++]=i; dfs(n,k,i+1,ans,c,count); --count; } } };
topic
datum a *
m x n
2D character euismodboard
et filum verbumword
.siword
est in malesuada euismod, redittrue
;false
。Verba ex litteris formari debent in cellulis adjacentibus ordine alphabetico, ubi cellae "adiacentes" sunt quae horizontaliter vel verticaliter adjacent. Litterae in eadem cellula saepe uti non licet.
Exemplum 1:
输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED" 输出:trueExemplum II:
输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE" 输出:trueExemplum III:
输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB" 输出:falseinnuere;
m == board.length
n = board[i].length
1 <= m, n <= 6
1 <= word.length <= 15
board
etword
Composuit tantum uppercase et lowercase litteras Latina
respondere
Similia exercitatione.
Methodus dfs+regrediendi primum visitationem notare definit num locus inter singulas inquisitiones notatus sit, ne eundem locum multipliciter visitetur.
Pro locatione, iudicium terminus debet statuere, an terminus transeat. Deinde utrum visitata sit, an feliciter inventa sit, et an littera in hac positione diversa sit a littera scopo.
dfs, quaerere.
class Solution { public: bool exist(vector<vector<char>>& board, string word) { if(board.empty()) return false; int m=board.size(),n=board[0].size(); vector<vector<bool>> visit(m,vector<bool>(n,false)); int i,j; bool find=false; for(i=0;i<m;i++){ for(j=0;j<n;j++) back(i,j,board,word,find,visit,0); } return find; } void back(int i,int j,vector<vector<char>>& board,string& word, bool& find,vector<vector<bool>>& visit,int level){ if(i<0||i>=board.size()||j<0||j>=board[0].size()) return ; if(visit[i][j]||find||board[i][j]!=word[level]) return ; if(level==word.size()-1){ find=true; return ; } visit[i][j]=true; back(i+1,j,board,word,find,visit,level+1); back(i-1,j,board,word,find,visit,level+1); back(i,j+1,board,word,find,visit,level+1); back(i,j-1,board,word,find,visit,level+1); visit[i][j]=false; } };
topic
Regina secundum regulas latrunculorum in eodem ordine vel columna vel in eodem diagonali partem aggredi potest.
n regina quaestioQuid studendum est quomodo
n
Regina positan×n
in LATRUNCULARIA, et reginas inter se oppugnare non possunt.Da tibi integrum
n
Redit omnia alian regina quaestiosolutio s.Quisque solutionem continet aliumn regina quaestioPars latrunculorum collocatio consilii, in hoc consilio
'Q'
et'.'
Reginam et vacuam sedem respective repraesentant.Exemplum 1:
输入:n = 4 输出:[[".Q..","...Q","Q...","..Q."],["..Q.","Q...","...Q",".Q.."]] 解释:如上图所示,4 皇后问题存在两个不同的解法。Exemplum II:
输入:n = 1 输出:[["Q"]]innuere;
1 <= n <= 9
题意
N Regina tres functiones labellas requirit, una columna, una diametrum principale, altera secundarium diametrum.
Quia regina in quolibet ordine posita erit definite, per ordinem percurritur. Itaque opus non est munus in versu posuit.
Hoc tempore a primo versu incipimus et per columnas percurramus. Utrum prima columna sit falsa , utrum principalis diagonalis sit falsa , et an secundaria diagonalis sit falsa . Si ita est, accede ad columnam sequentem. Refugium modum, memento restituere statum et functiones signans inquisitione.
Hoc diagonale et subdiagonale. Duci potest in coordinatis, alterum est y=x+b, alterum est y=-x+b.
Itaque b=yx, ut fiat b>0, sic addimus n. Alterum est y+x.
class Solution { public: vector<vector<string>> solveNQueens(int n) { vector<vector<string>> ans; if(n==0) return {}; vector<string> board(n,string(n,'.')); vector<bool> c(n,false),l(2*n-1,false),r(2*n-1,false); back(n,ans,board,c,l,r,0); return ans; } void back(int n,vector<vector<string>>& ans,vector<string>& board,vector<bool>& c, vector<bool>& l,vector<bool>& r,int row){ if(row==n){ ans.push_back(board); return ; } int i; for(i=0;i<n;i++){ if(c[i]||l[row-i+n]||r[row+i]){ continue; } board[row][i]='Q'; c[i]=l[row-i+n]=r[row+i]=true; back(n,ans,board,c,l,r,row+1); board[row][i]='.'; c[i]=l[row-i+n]=r[row+i]=false; } } };
Summatim
Methodus enim regressionis, primo limites conditiones et terminationes invenimus. Fere posui aequale numerum ordinum.
Termini conditio generaliter non est terminus transire.
Fere signatio functionis indiget. Tunc accessus lineae per lineam vel situm positione, et munus visitatum tag ponitur ad verum. Deinde ad sequentem vel sequentem lineam (plerumque recursive). Tunc restitue praedictam notationem functionis et tabulae finitis (plerumque unus ponetur ut responsum). Si congruit, push_back ad ans ordinata.