八数码C++源代码
#include<cstdio>
#include<vector>
#include<queue>
#include<ctime>
#define maxhash
#define hash(x) x%maxhash
using namespace std;
typedef unsigned long long ULL;
vector<ULL>list[maxhash];
vector<int>dist[maxhash];
inline int abs(int x)
{
return x<0?-x:x;
}
int hval[][];
void fill_hval(int *d)
{
for(int i=0;i<=8;i++)//number i
{
int pos;
for(int k=1;k<=9;k++)//i's position
if(d[k]==i)
{
pos=k;
break;
}
for(int j=1;j<=9;j++)
{
hval[i][j]=abs((j-1)/3-(pos-1)/3)+abs((j-1)%3-(pos-1)%3);
}
}
}
int h(ULL d)
{
int answer=0;
for(int i=9;i>=1;i--)
{
int x=d%;
d/=;
answer+=hval[x][i];
}
return answer;
}
int ToARR(ULL s,int *d)
{
int z=0;
for(int i=9;i>=1;i--)
{
d[i]=s%;
if(d[i]==0) z=i;
s/=;
}
return z;
}
ULL ToULL(int *d)
{
ULL ans=0;
for(int i=1;i<=9;i++)
ans=ans*+d[i];
return ans;
}
void insert(ULL x,int di)
{
ULL hx=hash(x);
list[hx].push_back(x);
dist[hx].push_back(di);
}
int find(ULL x)
{
ULL hx=hash(x);
int size=list[hx].size();
for(int i=0;i<size;i++)
if(x==list[hx][i]) return dist[hx][i];
return -1;
}
inline void swap(int &x,int &y)
{
int t=x;
x=y;
y=t;
}
struct state{
int step;
ULL x;
friend bool operator <(state a,state b)
{
return a.step>b.step;
}
};
int cnt=0;
void AStar(int *from,int *to)
{
priority_queue<state>q;
ULL x=ToULL(from);
ULL y=ToULL(to);
fill_hval(to);
q.push((state){ h(x),x});
insert(x,0);
int d[];
while(!q.empty())
{
cnt++;
state s=q.top();
ULL i=s.x; q.pop();
int step=find(i);
int z=ToARR(i,d);
//printf("%lld %d %d\n",i,step,z);
if(i==y) return;
if(z-3>0)
{
swap(d[z],d[z-3]);
ULL j=ToULL(d);
swap(d[z],d[z-3]);
if(find(j)!=-1) goto out1;
q.push((state){ step+h(j),j});
insert(j,step+1);
}
out1:
if(z+3<)
{
swap(d[z],d[z+3]);
ULL j=ToULL(d);
swap(d[z],d[z+3]);
if(find(j)!=-1) goto out2;
q.push((state){ step+h(j),j});
insert(j,step+1);
}
out2:
if(z%3!=0)
{
swap(d[z],d[z+1]);
ULL j=ToULL(d);
swap(d[z],d[z+1]);
if(find(j)!=-1) goto out3;
q.push((state){ step+h(j),j});
insert(j,step+1);
}
out3:
if(z%3!=1)
{
swap(d[z],d[z-1]);
ULL j=ToULL(d);
swap(d[z],d[z-1]);
if(find(j)!=-1) continue;
q.push((state){ step+h(j),j});
insert(j,step+1);
}
}
}
int from[],to[];
void work()
{
for(int i=1;i<=9;i++)
scanf("%d",&from[i]);
for(int i=1;i<=9;i++)
scanf("%d",&to[i]);
AStar(from,to);
ULL y=ToULL(to);
printf("%d ",find(y));
#ifdef DEBUG
printf("%d ",clock());
printf("%d ",cnt);
#endif
}
int main()
{
#ifdef DEBUG
freopen("debug.in","r",stdin);
freopen("debug.out","w",stdout);
#endif
work();
return 0;
}
这是基于曼哈顿距离的估价函数的Astar
Dreamweaver8怎么生成源代码
Dreamweaver8生成源代码方法步骤:1、创建css样式,源码点击窗口\css样式,源码可以打开css样式编辑窗口,源码还可以直接在属性面板内创建。源码
2、源码王者源码是什么点击属性面板的源码编辑规则,或者是源码css样式窗口的+号就可以打开新建css规则对话框。
3、源码选择要创建的源码css样式的内容。比如要为段落更改样式。源码
4、源码在弹出的源码定义对话框中,选择要更改的源码各种属性。比如把段落的源码android 电子相册源码字体大小改为px,字体颜色改为红色。
5、点击确定,发现段落中的文字就出现了相应的效果。在<head>中条件了css样式代码。
Java 8 Nashorn 指南
在这个Java SE 8的教程里,我们将通过实例演示Nashorn JavaScript引擎,一个与Google V8等独立引擎竞争的内置于JVM的引擎。Nashorn通过在Java代码中直接运行动态的JavaScript,增强了Java的功能。
在接下来的简短篇幅中,你将学习如何在JVM上实时运行JavaScript,通过代码示例了解Nashorn的新特性。我们将探讨如何在Java中调用JavaScript函数,三界乾坤 源码反之亦然,并预览如何将JavaScript脚本融入实际业务场景。
值得注意的是,我正在开发一个名为Stream.js的Java8数据流API的JavaScript实现,你可以查看我的Github来了解详情,期待你的反馈。
在Java中使用Nashorn,可以从命令行工具jjs开始,它位于$JAVA_HOME/bin中。我们主要关注在Java代码中的应用,以下是一个简单的HelloWorld示例:
要执行JavaScript,需通过javax.script创建脚本引擎,这是Rhino(Mozilla遗留的JS引擎)的一部分。JavaScript可以通过字符串或FileReader执行,2015源码免杀教程支持ECMAScript 5.1和后续的ES6版本。
Nashorn扩展了ECMAScript标准,允许Java和JavaScript代码的无缝交互。例如,Java对象可以直接作为函数参数,而JavaScript函数的返回值可以调用Java方法。
继续深入,我们将学习如何在JavaScript中调用Java方法,通过Java静态方法的引用和类型转换,理解两者间的交互机制。
此外,教程还涵盖了ScriptObjectMirror的使用,以及Nashorn对类型数组、集合遍历、discuz 发贴无源码选项Lambda表达式、类继承、参数重载、JavaBeans和数据流的处理。每个特性都有实例代码演示。
最后,我们还会探索Nashorn的命令行脚本功能,如Nake工具,以及如何在实际项目中加载和执行外部脚本。
通过本教程,你将对Nashorn有全面的了解,并准备好在实际项目中应用。更多Nashorn信息可参考相关链接,我已发布关于Backbone.js和Java8教程,源代码可在Github上获取,期待你的参与和反馈。
文华财经T8更新版量化交易策略模型源码
文华财经T8更新版量化交易策略模型源码:
此量化交易策略模型源码采用了一系列技术指标和条件,旨在通过自动化方式提升交易决策的效率和准确性。代码中定义了关键变量以支持多头和空头策略的实施。
在多头策略方面,代码通过设置多个条件来识别买入时机。若“SKLOW”超过“S”(一个计算得到的价格阈值)且“SKVOL”(成交量)大于零,且当前收盘价高于“REF(H+1*MINPRICE,BARSSK)”(过去某时段最高价),则发出买入指令(BP)。
同样地,空头策略也设置了相应的买入条件。当“BKHIGH”(一个计算得到的高点)超过“B”(基础价格)且“BKVOL”(成交量)大于零,同时满足一定条件,代码会触发卖出指令(SP)。
此外,源码中还包含了自动过滤规则(AUTOFILTER),以及设置特定价格类型(SETSIGPRICETYPE)和价格取值规则(SETOTHERPRICE),以进一步优化交易决策流程。
源代码采用utf8 with bom还是utf8 no bom保存的相关问题
在编程领域,选择源代码的encoding格式往往是个微妙且复杂的问题。这不仅牵涉到源代码的可读性和兼容性,更影响到编译器的解析和执行。让我们深入探讨在不同开发环境中,如何妥善处理utf8编码格式的选择与BOM(Byte Order Mark)的使用。
首先,理解编码格式的含义至关重要。UTF-8是一种无符号、变长字符编码标准,能够表示几乎所有语言的字符。在UTF-8编码下,中文字符通常以三个字节表示,以确保字符的完整性和跨平台的兼容性。然而,这一编码标准在不同的开发环境和编译器中展现的兼容性并不相同。
在某些开发环境中,如Visual Studio,中文字符默认以GB编码处理,这会导致在使用UTF-8编码时遇到乱码问题。在这样的情况下,将文件保存为UTF-8编码是明智之举。然而,在选择UTF-8编码时,是否包含BOM则需要根据实际需求和兼容性考虑。
UTF-8 with BOM(即包含BOM的UTF-8编码)提供了一种方式,通过在文件开头添加四个字节的BOM来明确指示文件的编码类型,这在处理较旧版本的编译器或某些特定环境时更为有利。然而,一些编译器或环境并不支持或识别UTF-8 with BOM格式的文件,导致解析错误或文件读取问题。因此,选用UTF-8 no BOM(不包含BOM的UTF-8编码)成为更广泛兼容性的选择。
在实际开发中,避免在代码中混用非标准的换行符(如在某些编辑器中常见的不同换行格式),以及在文件保存时统一使用UTF-8 no BOM编码格式,可以显著减少因编码问题导致的编译错误和兼容性问题。特别是在包含中文注释或中文字符的代码中,这一点尤为重要。
综上所述,选择UTF-8 no BOM作为源代码的保存格式,可以有效避免因编码问题导致的编译错误和兼容性挑战。在进行代码编写时,保持编码格式的一致性和跨平台兼容性是提高代码质量和开发效率的关键因素。
2024-12-28 23:37
2024-12-28 23:28
2024-12-28 22:26
2024-12-28 22:14
2024-12-28 21:14