当前位置:网站首页>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;
}
边栏推荐
- @Autowired 和 @Resource 的区别
- What is the maximum length of MySQL varchar field
- [Leetcode15]三数之和
- VIM command line notes
- Pat 1097 duplication on a linked list (25 points)
- Esp8266 uses Arduino to connect Alibaba cloud Internet of things
- Servlet
- ORA-02030: can only select from fixed tables/views
- NRF24L01故障排查
- JUC forkjoin and completable future
猜你喜欢
(五)R语言入门生物信息学——ORF和序列分析
Unity3d makes the registration login interface and realizes the scene jump
Derivation of logistic regression theory
记一次云服务器被密码爆破的经历——关小黑屋、改密码、改端口
(三)R语言的生物信息学入门——Function, data.frame, 简单DNA读取与分析
Whistle+switchyomega configure web proxy
(四)R语言的数据可视化——矩阵图、柱状图、饼图、散点图与线性回归、带状图
MySQL時間、時區、自動填充0的問題
NRF24L01故障排查
基于Redis的分布式锁 以及 超详细的改进思路
随机推荐
ESP8266连接onenet(旧版MQTT方式)
level16
JS regular expression basic knowledge learning
Office提示您的许可证不是正版弹框解决
(课设第一套)1-5 317号子任务 (100 分)(Dijkstra:重边自环)
Pat 1097 duplication on a linked list (25 points)
[offer29] sorted circular linked list
Unity scene jump and exit
[Red Treasure Book Notes simplified version] Chapter 12 BOM
History object
Detailed explanation of truncate usage
Arduino uno R3 register writing method (1) -- pin level state change
JS Title: input array, exchange the largest with the first element, exchange the smallest with the last element, and output array.
2021.11.10汇编考试
[leetcode622] design circular queue
MySQL replacement field part content
[offer78] merge multiple ordered linked lists
Latex learning
JS变量类型以及常用类型转换
1081 rational sum (20 points) points add up to total points