当前位置:网站首页>Acwing-116 pilot brother
Acwing-116 pilot brother
2022-07-06 12:35:00 【Want no boat at the bottom of the sea】
The essence of this problem is the same as that of eight digits
First define a state
struct st{
int map[4];// Handle status
int num;// They count
vector<int> s;// route
int a;// ID code
}
About the steps
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#define x first
#define y second
using namespace std;
// Defining structure
struct st {
};
st bfs() {
// initialization
queue<st> que;
que.push();
while () {
st t = que.front();
for()
for () {
// Make new elements
if()// End the process when the conditions are met ;
return
}
que.pop()// Delete the head element
}
}
int main() {
// receive data
for (.....) cin >> ...//
// Make the header element
bfs();// Output results
}
The actual code
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#define x first
#define y second
using namespace std;
const int N = 5;
int n = 4;
bool jud[1000000];
typedef pair<int, int> two;
struct st {
int map[N][N];
int num;
int a;
vector<two> s;
}st1;
void clone(int a[][N], int b[][N]) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
a[i][j] = b[i][j];
}
}
void change(int x, int y, int mid[][N]) {
for (int i = 1; i <= n; i++)
mid[i][y] = mid[i][y] ^ 1;
for (int i = 1; i <= n; i++)
mid[x][i] = mid[x][i] ^ 1;
mid[x][y] = mid[x][y] ^ 1;
}
int make(int a[][N]) {
int sum = 0, fur = 0;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
if (a[i][j]) sum += 1 << fur++;
else fur++;
}
return sum;
}
st bfs() {
queue<st> que;
que.push(st1);
while (que.size()) {
st t = que.front();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if(t.s.size())
if (i == t.s.back().x&&j == t.s.back().y)
continue;
st mid;
clone(mid.map, t.map);//map
change(i, j, mid.map);
mid.a = make(mid.map);//a
if (!jud[mid.a]) {
jud[mid.a] = true;
mid.num = t.num + 1;//num
mid.s = t.s;//s
mid.s.push_back({ i,j });
que.push(mid);
if (mid.a == 65535) {
cout << mid.num << endl;
return mid;
}
}
}
}
que.pop();
}
}
int main() {
for(int i=1;i<=n;i++)
for (int j = 1; j <= n; j++) {
char a; cin >> a;
if (a == '-') st1.map[i][j] = 1;
else st1.map[i][j] = 0;
}
st1.a = make(st1.map);
jud[st1.a] = 1;
st1.num = 0;
st it = bfs();
for (int i = 0; i < it.s.size(); i++)
cout << it.s[i].x << ' ' << it.s[i].y << endl;
}
边栏推荐
- Esp8266 connects to bafayun (TCP maker cloud) through Arduino IED
- @The difference between Autowired and @resource
- 2021.11.10 compilation examination
- Get the position of the nth occurrence of the string
- ESP8266连接onenet(旧版MQTT方式)
- Derivation of logistic regression theory
- Who says that PT online schema change does not lock the table, or deadlock
- Single chip Bluetooth wireless burning
- Common DOS commands
- [golang] leetcode intermediate - fill in the next right node pointer of each node & the k-smallest element in the binary search tree
猜你喜欢
Common properties of location
[Red Treasure Book Notes simplified version] Chapter 12 BOM
Symbolic representation of functions in deep learning papers
Basic operations of databases and tables ----- classification of data
Navigator object (determine browser type)
基于Redis的分布式ID生成器
MySQL占用内存过大解决方案
JS正则表达式基础知识学习
Teach you to release a DeNO module hand in hand
NRF24L01 troubleshooting
随机推荐
Mysqldump error1066 error solution
Générateur d'identification distribué basé sur redis
Solution to the problem of automatic login in Yanshan University Campus Network
Arduino gets the length of the array
[leetcode19] delete the penultimate node in the linked list
There is no red exclamation mark after SVN update
(课设第一套)1-5 317号子任务 (100 分)(Dijkstra:重边自环)
MySQL占用内存过大解决方案
数据库课程设计:高校教务管理系统(含代码)
Minio文件下载问题——inputstream:closed
Derivation of logistic regression theory
燕山大学校园网自动登录问题解决方案
First use of dosbox
Arm pc=pc+8 is the most understandable explanation
[Offer18]删除链表的节点
level16
Learning notes of JS variable scope and function
JS 函数提升和var变量的声明提升
Intermediate use tutorial of postman [environment variables, test scripts, assertions, interface documents, etc.]
如何给Arduino项目添加音乐播放功能