我用c ++实现了Damerau-Levenshtein距离,但它没有为输入提供正确的o/p(pantera,aorta)正确的o/p是4但是我的代码给出了5 .....
int editdist(string s,string t,int n,int m)
{
int d1,d2,d3,cost;
int i,j;
for(i=0;i<=n;i++)
{
for(j=0;j<=m;j++)
{
if(s[i+1]==t[j+1])
cost=0;
else
cost=1;
d1=d[i][j+1]+1;
d2=d[i+1][j]+1;
d3=d[i][j]+cost;
d[i+1][j+1]=minimum(d1,d2,d3);
if(i>0 && j>0 && s[i+1]==t[j] && s[i]==t[j+1] ) //transposition
{
d[i+1][j+1]=min(d[i+1][j+1],d[i-1][j-1]+cost);
}
}
}
return d[n+1][m+1];
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何错误.有人可以发现代码有问题吗?
我试图在scanf中使用scanset做一些东西但是卡在某处.
我写的时候
char s1[250];
scanf("%[A-Z]s",s1);
input : AHJHkiuy
Output: AHJH
Run Code Online (Sandbox Code Playgroud)
有了这个,
scanf("%[^\n]s",s1);
input: abcd ABCD hie
output: abcd ABCD hie /*that is reading white space also (till \n) */
Run Code Online (Sandbox Code Playgroud)
现在我的问题是,如果我提供输入:
ABCDahaj ahajABCD ajak12347ab
Run Code Online (Sandbox Code Playgroud)
并希望输出为:
ABCDahaj ahajABCD ajak
Run Code Online (Sandbox Code Playgroud)
那么格式字符串应该如何写?也就是说,如何使用这个扫描设备?
我正在尝试执行以下操作:
写一个func
setbits(x,p.n,y),返回x的n位从p设置到最右边n位的位置开始,y其他位保持不变?
我试过这样但没有得到正确的答案.任何人都可以告诉我哪里错了吗?
unsigned setbits(unsigned x,int p,int n,unsigned y)
{
return (x>>p & (y|(~0<<n)));
}
Run Code Online (Sandbox Code Playgroud) 我写了下面的代码,期望它输出211,但是当我编译并运行它时,我看到了137.
有人可以解释一下发生了什么吗?谢谢.
?#include <stdio.h>
int main()
{
int binary1,binary2;
binary1 = 0100;
binary2 = 0111;
printf("%d\n", binary1 + binary2);
return 0:
}
Run Code Online (Sandbox Code Playgroud)