Technology sharing

Likou-REGRESSUS modum

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.

46.Full Ordinatio

topic

Datum ordinata sine duplicata numerisnumsRedi 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
  • numsOmnes integri ininter se differentes​​​​​​​
respondere
Ad 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.
  1. class Solution {
  2. public:
  3. vector<vector<int>> permute(vector<int>& nums) {
  4. vector<vector<int>> ans;
  5. back(nums,0,ans);
  6. return ans;
  7. }
  8. void back(vector<int>& nums,int n,vector<vector<int>>& ans){
  9. int i;
  10. if(n==nums.size()-1)
  11. ans.push_back(nums);
  12. for(i=n;i<nums.size();i++){
  13. swap(nums[i],nums[n]);
  14. back(nums,n+1,ans);
  15. swap(nums[i],nums[n]);
  16. }
  17. }
  18. };

77. Compositum

77. Compositum

topic

Datum duobus integrisnetkRedi range[1, n]omnia possibilia suntkconcursus 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.

  1. class Solution {
  2. public:
  3. vector<vector<int>> combine(int n, int k) {
  4. vector<vector<int>> ans;
  5. vector<int> c(k,0);
  6. int count;
  7. dfs(n,k,1,ans,c,count);
  8. return ans;
  9. }
  10. void dfs(int n,int k,int level,vector<vector<int>>& ans,vector<int>& c,int& count){
  11. int i;
  12. if(count==k){
  13. ans.push_back(c);
  14. return ;
  15. }
  16. for(i=level;i<=n;i++){
  17. c[count++]=i;
  18. dfs(n,k,i+1,ans,c,count);
  19. --count;
  20. }
  21. }
  22. };

79. Unit quaerere

79. Verbum quaerere

topic

datum a *m x n2D character euismodboardet filum verbumword .siwordest 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"
输出:true

Exemplum II:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
输出:true

Exemplum III:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
输出:false

innuere;

  • m == board.length
  • n = board[i].length
  • 1 <= m, n <= 6
  • 1 <= word.length <= 15
  • boardetwordComposuit 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.

  1. class Solution {
  2. public:
  3. bool exist(vector<vector<char>>& board, string word) {
  4. if(board.empty())
  5. return false;
  6. int m=board.size(),n=board[0].size();
  7. vector<vector<bool>> visit(m,vector<bool>(n,false));
  8. int i,j;
  9. bool find=false;
  10. for(i=0;i<m;i++){
  11. for(j=0;j<n;j++)
  12. back(i,j,board,word,find,visit,0);
  13. }
  14. return find;
  15. }
  16. void back(int i,int j,vector<vector<char>>& board,string& word,
  17. bool& find,vector<vector<bool>>& visit,int level){
  18. if(i<0||i>=board.size()||j<0||j>=board[0].size())
  19. return ;
  20. if(visit[i][j]||find||board[i][j]!=word[level])
  21. return ;
  22. if(level==word.size()-1){
  23. find=true;
  24. return ;
  25. }
  26. visit[i][j]=true;
  27. back(i+1,j,board,word,find,visit,level+1);
  28. back(i-1,j,board,word,find,visit,level+1);
  29. back(i,j+1,board,word,find,visit,level+1);
  30. back(i,j-1,board,word,find,visit,level+1);
  31. visit[i][j]=false;
  32. }
  33. };

51.N Reginae

51. Regina N

topic

Regina secundum regulas latrunculorum in eodem ordine vel columna vel in eodem diagonali partem aggredi potest.

n regina quaestioQuid studendum est quomodonRegina positan×nin LATRUNCULARIA, et reginas inter se oppugnare non possunt.

Da tibi integrumnRedit 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&gt;0, sic addimus n. Alterum est y+x.

  1. class Solution {
  2. public:
  3. vector<vector<string>> solveNQueens(int n) {
  4. vector<vector<string>> ans;
  5. if(n==0)
  6. return {};
  7. vector<string> board(n,string(n,'.'));
  8. vector<bool> c(n,false),l(2*n-1,false),r(2*n-1,false);
  9. back(n,ans,board,c,l,r,0);
  10. return ans;
  11. }
  12. void back(int n,vector<vector<string>>& ans,vector<string>& board,vector<bool>& c,
  13. vector<bool>& l,vector<bool>& r,int row){
  14. if(row==n){
  15. ans.push_back(board);
  16. return ;
  17. }
  18. int i;
  19. for(i=0;i<n;i++){
  20. if(c[i]||l[row-i+n]||r[row+i]){
  21. continue;
  22. }
  23. board[row][i]='Q';
  24. c[i]=l[row-i+n]=r[row+i]=true;
  25. back(n,ans,board,c,l,r,row+1);
  26. board[row][i]='.';
  27. c[i]=l[row-i+n]=r[row+i]=false;
  28. }
  29. }
  30. };

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.