gpt4 book ai didi

c++ - 阅读 getchar_unlocked 失败案例

转载 作者:行者123 更新时间:2023-11-30 05:44:11 26 4
gpt4 key购买 nike

这是我计算编号的代码。次 A[i]>B[j] 这样,我 < j

 #include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n,c=0,j=1,i;
cin>>n;
int*a,*b;
a=(int*)malloc(sizeof(int)*n);
b=( int*)malloc(sizeof( int)*n);
for( i=0;i<n;i++)
{
cin>>a[i];
}
for( i=0;i<n;i++)
{
cin>>b[i];
}
while(j<n)
{
for( i=0;i<j;i++)
{

if(a[i]>b[j])
c++;
}
j++;
}
cout<<c;
return 0;
}

这很好用,我尝试使用 getchar_unlocked 来减少时间,但我在网站上得到了错误的答案。初始测试用例向我显示了正确的输出,我确实使用 cin 输入流对所有情况进行了相同的算法工作,但我使用 getchar_unlocked 没有这样做是否有任何错误在我的输入函数中,或者我在哪里做错了?

我的 getchar_unlock 看起来像这样

int readInt()
{
char c=getchar_unlocked();
while(c<'1'||c>'9')
c=getchar_unlocked();
int ret=0;
while(c>='1'&&c<='9')
{
ret=ret*10+c-48;
c=getchar_unlocked();
}
return ret;
}

P.S: 我不知道失败的测试用例:(

最佳答案

如果有非前导零,您的 readInt() 将不起作用。例如,如果输入是 10,您将返回 1

这是我久经考验的实现(仅适用于非负整数)。

int get() {
int res = 0;
int c;
do {
c = getchar_unlocked();
} while (c <= 32);
do {
res = 10*res + c - '0';
c = getchar_unlocked();
} while (c > 32);
return res;
}

我还建议使用 std::vector 而不是直接调用 mallocnew

关于c++ - 阅读 getchar_unlocked 失败案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29902435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com