c语言马属性,马的周游C语言实现

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

// Problem#: 1153

// Submission#: 3079805

// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License

// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/

// All Copyright reserved by Informatic Lab of Sun Yat-sen University

//

// main.cpp

// 马的周游

//

// Created by liujan on 10/24/14.

// Copyright (c) 2014 liujan. All rights reserved.

//

#include

#include "vector"

#include "memory.h"

#include "algorithm"

using namespace std;

bool isvisited[8][8];

int move_x[8] = { -2,-1,1,2,-2,2 };

int move_y[8] = { -1,1 };

vectorroute;

struct Node{

int x,y;

int child;

};

bool cmp(Node a,Node b){

return a.child < b.child;

}

vector nextMove(Node current){

int y = current.y;

int x = current.x;

vectornext;

for (int i = 0; i < 8; i++){

int tmpx = x + move_x[i];

int tmpy = y + move_y[i];

if (tmpx >= 0 && tmpx <= 7 && tmpy <= 7 && tmpy >= 0 && !isvisited[tmpy][tmpx]){

Node tmp;

tmp.x = tmpx;

tmp.y = tmpy;

tmp.child = 0;

next.push_back(tmp);

}

}

return next;

}

bool move(Node pos){

if (route.size() == 64){

for (size_t i = 0; i < route.size() - 1; i++){

cout << route[i] << " ";

}

cout << route[route.size() - 1] << endl;

return true;

}

else{

vector next = nextMove(pos);

for (int i = 0; i < next.size(); i++){

next[i].child = nextMove(next[i]).size();

}

sort(next.begin(),next.end(),cmp);

for (size_t i = 0; i < next.size(); i++){

int y = next[i].y;

int x = next[i].x;

isvisited[y][x] = true;

route.push_back(y * 8 + x + 1);

bool result = move(next[i]);

if (!result){

isvisited[y][x] = false;

route.pop_back();

}

else{

return true;

}

}

return false;

}

}

int main(){

int n;

while (cin >> n && n != -1)

{

for (int i = 0; i < 8; i++){

for (int j = 0; j < 8; j++)

isvisited[i][j] = false;

}

route.clear();

int y = (n - 1) / 8;

int x = n - y * 8 - 1;

Node head;

head.x = x;

head.y = y;

isvisited[y][x] = true;

route.push_back(n);

move(head);

}

}

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

总结

以上是编程之家为你收集整理的马的周游C语言实现全部内容,希望文章能够帮你解决马的周游C语言实现所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值