当前位置:网站首页>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;
}边栏推荐
- Force buckle 1189 Maximum number of "balloons"
- JS 函数提升和var变量的声明提升
- VIM command line notes
- Detailed explanation of truncate usage
- Guided package method in idea
- Knowledge summary of request
- Who says that PT online schema change does not lock the table, or deadlock
- @The difference between Autowired and @resource
- Basic operations of databases and tables ----- classification of data
- dosbox第一次使用
猜你喜欢

Redis 缓存更新策略,缓存穿透、雪崩、击穿问题

记一次云服务器被密码爆破的经历——关小黑屋、改密码、改端口

Custom view puzzle getcolor r.color The color obtained by colorprimary is incorrect

NRF24L01 troubleshooting

js题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

Basic operations of databases and tables ----- modifying data tables

Unity scene jump and exit

idea中好用的快捷键

Latex learning

程序设计大作业:教务管理系统(C语言)
随机推荐
Guided package method in idea
(5) Introduction to R language bioinformatics -- ORF and sequence analysis
基于Redis的分布式ID生成器
JUC forkjoin and completable future
The dolphin scheduler remotely executes shell scripts through the expect command
[leetcode622] design circular queue
idea中导包方法
(五)R语言入门生物信息学——ORF和序列分析
MySQL时间、时区、自动填充0的问题
Unity3d camera, the keyboard controls the front and rear left and right up and down movement, and the mouse controls the rotation, zoom in and out
MySQL時間、時區、自動填充0的問題
Vscode basic configuration
1041 Be Unique (20 point(s))(哈希:找第一个出现一次的数)
Cannot change version of project facet Dynamic Web Module to 2.3.
JS Title: input array, exchange the largest with the first element, exchange the smallest with the last element, and output array.
JS数组常用方法的分类、理解和运用
[offer78]合并多个有序链表
[offer29] sorted circular linked list
Page performance optimization of video scene
Stm32f1+bc20+mqtt+freertos system is connected to Alibaba cloud to transmit temperature and humidity and control LED lights