Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么是C++;程序不适用于少数测试用例?_C++_Algorithm_Recursion_Data Structures - Fatal编程技术网

C++ 为什么是C++;程序不适用于少数测试用例?

C++ 为什么是C++;程序不适用于少数测试用例?,c++,algorithm,recursion,data-structures,C++,Algorithm,Recursion,Data Structures,在第一行,我们写一个0。现在,在接下来的每一行中,我们查看前一行,并将每次出现的0替换为01,将每次出现的1替换为10 给定第N行和索引K,返回第N行中的第K个索引符号。(K的值为1索引。)(1索引) 示例: 输入:N=1,K=1 输出:0 输入:N=2,K=1 输出:0 输入:N=2,K=2 产出:1 输入:N=4,K=5 产出:1 说明: 第1行:0 第2排:01 第3排:0110 第4行:01101001 问题的链接: 解决方案: class Solution { public:

在第一行,我们写一个0。现在,在接下来的每一行中,我们查看前一行,并将每次出现的0替换为01,将每次出现的1替换为10

给定第N行和索引K,返回第N行中的第K个索引符号。(K的值为1索引。)(1索引)

示例: 输入:N=1,K=1 输出:0

输入:N=2,K=1 输出:0

输入:N=2,K=2 产出:1

输入:N=4,K=5 产出:1

说明: 第1行:0 第2排:01 第3排:0110 第4行:01101001

问题的链接:

解决方案:

class Solution {
public:
    int kthGrammar(int N, int K) {
        if(N==0||K==0)
            return 0;
        
        string result="0";
        string finals;
        int i,j;
        for(j=0;j<N-1;j++)
        {
            
            for(i=0;i<result.length();i++)
            {
                if(result[i]=='0')
                    finals.append("01");
                else
                    finals.append("10");
            }
            result=finals;
            
        }
        return result[K-1]-'0';
    }
};
类解决方案{
公众:
int kthGrammar(int N,int K){
如果(N==0 | | K==0)
返回0;
字符串结果=“0”;
弦乐决赛;
int i,j;

对于(j=0;j你的
final
字符串仍然保留着旧内容。似乎你需要在每次循环时清除它

无论如何,你的方法不适合大的输入-因此,代替(巨大)字符串生成考虑用一些数学计算需要的符号。< /P> <代码> DEF f(n,k):

def f(n,k):
   if n == 1:
     return 0
   if k<=pow(2,n-2):
     return f(n-1,k)
   else:
     return 1-f(n-1,k-(pow(2,n-2)))
如果n==1: 返回0
请注意,C和C++是不同的语言。对于您的代码,我希望TLE代替失败的测试用例。请在循环中的每一次迭代中重复检查。打印<代码>结果< /代码>。将n=4,k=5与示例比较。现在OP已经接受了答案,让我提一下,我认为这是最快的方法,万一如此。下一个问题是TLE。关于效率:查看第一行,并尝试将结果依赖于K的二进制表示形式,假设K的索引为零。但是我在每个循环上追加索引,为什么需要清除它?此任务假设每个外部循环的长度加倍。但是您使用三倍长度(“01”=>当前的“01”+新的“01”+新“10”=“010110”)请注意,当前字符串将是新字符串的开始,因此您可以保持当前的
期末考试
,只对字符串的后半部分附加处理。您可以为实际问题提供有效的解决方案,而不是回答问题。这是可以的,但如果您解释您的解决方案如何工作以及为什么更可取,答案会更好。