C++ 語法中的第 K 個符號


假設第一行有 0。現在,在每一行中,我們檢視前一行,並將每個 0 替換為 01,並將每個 1 替換為 10。假設我們有 N 行和索引 K,我們必須找到行 N 中的第 K 個索引符號。(K 的值為 1,基於索引 1)。因此,如果 N = 4 且 K = 5,則輸出將為 1。這是因為 −

  • 第一行:0
  • 第二行:01
  • 第三行:0110
  • 第四行:01101001

為解決這個問題,我們將按照以下步驟進行 −

  • 假設方法的名稱為 kthGrammar。這將接受 N 和 K。
  • 如果 N 為 1,則返回 0
  • 如果 k 為偶數,則當 then kthGrammar(N – 1, K/2) 為 0 時返回 1,否則返回 0
  • 否則,返回 kthGrammar(N – 1, (K + 1)/2)

讓我們檢視以下實現,以便更好地理解 −

示例

 即時演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int kthGrammar(int N, int K) {
      if(N == 1) return 0;
      if(K % 2 == 0){
      return kthGrammar(N - 1, K / 2) == 0 ? 1 : 0;
      }else{
         return kthGrammar(N - 1, (K + 1) / 2);
      }
   }
};
main(){
   Solution ob;
   cout << (ob.kthGrammar(4, 5));
}

輸入

4
5

輸出

1

更新日期:2020-05-04

933 次瀏覽

開啟你的 職業生涯

完成課程以獲得認證

立即開始
廣告
© . All rights reserved.