我想编写一个Prolog程序来查找两个列表的相等性,其中元素的顺序
无关紧要.所以我写了以下内容:
del(_, [], []) .
del(X, [X|T], T).
del(X, [H|T], [H|T1]) :-
X \= H,
del(X, T, T1).
member(X, [X|_]).
member(X, [_|T]) :-
member(X, T).
equal([], []).
equal([X], [X]).
equal([H1|T], L2) :-
member(H1, L2),
del(H1, L2, L3),
equal(T, L3).
Run Code Online (Sandbox Code Playgroud)
但是当我提供输入时equal([1,2,3],X).
,它并没有显示所有可能的值X
.相反,程序挂在中间.可能是什么原因?
我有两个C++文件,比如file1.cpp和file2.cpp as
//file1.cpp
#include<cstdio>
void fun(int i)
{
printf("%d\n",i);
}
//file2.cpp
void fun(double);
int main()
{
fun(5);
}
Run Code Online (Sandbox Code Playgroud)
当我编译它们并将它们作为c ++文件链接时,我收到错误"undefined reference to fun(double)".
但当我这样做C文件时,我没有得到错误,而是打印0而不是5.
请解释原因.
此外,我想问一下在定义函数之前是否需要声明一个函数,因为
我没有在file1.cpp中声明它,但编译时没有错误.
我想在C中使用printf()函数打印一些东西,而不包括stdio.h,所以我编写了程序:
int printf(char *, ...);
int main(void)
{
printf("hello world\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以上程序是否正确?
我试过以下代码:
#include<iostream>
#include<string>
using namespace std;
string f1(string s)
{
return s="f1 called";
}
void f2(string *s)
{
cout<<*s<<endl;
}
int main()
{
string str;
f2(&f1(str));
}
Run Code Online (Sandbox Code Playgroud)
但是这段代码没有编译.
我的想法是:f1按值返回所以它创建临时,我正在接收地址并传递给f2.
现在请解释一下我在想错的地方?
Pumping Lemma用于证明语言不规律.但是如何
证明一种语言是规则的?特别是,
Let L be a language. Define half(L) to be
{ x | for some y such that |x| = |y|, xy is in L}.
Prove for each regular L that half(L) is regular.
Run Code Online (Sandbox Code Playgroud)
是否有任何技巧或一般程序来解决这类问题?
我想知道,在c ++中,对象的初始化何时发生?
是在编译时还是链接时?
例如:
//file1.cpp
extern int i;
int j=5;
//file2.cpp ( link with file1.cpp)
extern j;
int i=10;
Run Code Online (Sandbox Code Playgroud)
现在,编译器做了什么:根据我的说法,它为变量分配存储空间.
现在我想知道:
它是否也将初始化值放在该存储中,还是在链接时完成?
我对NP难问题感到困惑.
NP中存在一些NP难题,称为NP-Complete,有些不在NP中.
例如:暂停问题只是NP难,而不是NP完全.
但为什么它不是NP完全?我的意思是,问题必须具备哪些属性才能成为
"NP难但不是NP完全问题"?
给定正整数n,我想在matlab中生成所有可能的n位组合.
例如:如果n = 3,那么答案应该是
000
001
010
011
100
101
110
111
Run Code Online (Sandbox Code Playgroud)
我该怎么做 ?我想将它们存储在矩阵中.我试过了
for n=1:2^4
r(n)=dec2bin(n,5);
end;
Run Code Online (Sandbox Code Playgroud)
但是这给出了错误"在赋值A(:) = B中,A和B中的元素数必须相同.
对于为什么
(A%2 == 0)的答案给出答案?A = 0:A = 1给出错误.
我不明白我们何时使用(优先级和关联性)并
使用C语法来解析表达式?