C ++语法中的第K个符号
假设在第一行上,我们有一个0。现在,在每一行中,我们查看前一行,并将每个出现的0替换为01,并将每个出现的1替换为10。假设我们有N行,索引为K,必须在第N行中找到第K个索引符号。(K的值是1索引。)(1索引)。因此,如果N=4且K=5,则输出将为1。这是因为-
第1行:0
第2行:01
第3列:0110
第4列:01101001
为了解决这个问题,我们将遵循以下步骤-
假设方法的名称是kthGrammar。这需要N和K。
如果N为1,则返回0
如果k为偶数,则当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
热门推荐
10 祝孙辈生日祝福语简短
11 恋人跨年祝福语大全简短
12 考大学敬酒简短祝福语
13 开工投产大吉祝福语 简短
14 偶然结婚祝福语朋友简短
15 感谢学长学姐祝福语简短
16 戏精的祝福语简短
17 我要结婚祝福语简短
18 婚前女儿生日祝福语简短