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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP