3 全排列

从键盘输入一个没有重复元素的字符串,输出这个字符串所有字符的全排列

输入格式:

一个字符串,输入保证字符串中没有重复的字符,字符串的长度不超过10,字符串中不含空格。

输出格式:

按字典序输出该字符串所有字符的全排列。每个字符之间没有空格。每种排列之间换行。

输入样例1:

ABC

输出样例1:

ABC
ACB
BAC
BCA
CAB
CBA

输入样例2:

CAB

输出样例2:

ABC
ACB
BAC
BCA
CAB
CBA

输入样例3:

ATOM

输出样例3:

AMOT
AMTO
AOMT
AOTM
ATMO
ATOM
MAOT
MATO
MOAT
MOTA
MTAO
MTOA
OAMT
OATM
OMAT
OMTA
OTAM
OTMA
TAMO
TAOM
TMAO
TMOA
TOAM
TOMA

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<iostream>
#include <memory.h>
#include <string>
#include <algorithm>using namespace std;
bool visited[12] = {false};
string s;
int num = 0;
char mark[12];void dfs(int n);int main()
{cin >> s;for(int i = 0; i < s.size()-1; i++)for(int j = i+1; j < s.size(); j++)if(s[i] > s[j]){char m = s[i];s[i] = s[j];s[j] = m;}bfs(0);}void dfs(int n)
{//输出字符串所有字符后换行返回if(num == s.size()){cout << mark << endl;return;}for(int i = 0; i < s.size(); i++){//如果没访问过该字符、并且不是当前字符,就接着bfs该字符if(visited[i] == false){visited[i] = true;  //设为访问过了mark[num++] = s[i]; //将该字符存入markdfs(i);             //bfs该字符visited[i] = false; //调用完回溯回来,设为没访问过num--;              //访问过的字符长度-1}}
}

4 n皇后问题

要求在n*n格的棋盘上放置彼此不会相互攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。

输入格式:

测试数据有多组,处理到文件尾。对于每组测试,输入棋盘的大小n(1<n<12)。

输出格式:

对于每组测试,输出满足要求的方案个数。

输入样例:

4

输出样例:

2

代码长度限制

16 KB

Python (python3)

时间限制

4000 ms

内存限制

64 MB

其他编译器

时间限制

400 ms

内存限制

64 MB

#include<iostream>
#include <memory.h>
#include <string>
#include <algorithm>
#include <stdio.h>using namespace std;
void HanShu(int x, int y);
int mark = 0;
int n;
int point[12][12] = {0};
int row = 0; //到第几行该放棋子了int main()
{while(cin >> n){mark = 0; row = 0;memset(point, 0, sizeof(point));//从第0行开始判断HanShu(0, 0);cout << mark << endl;}
return 0;
}void HanShu(int x, int y)
{//判断到第n行结束if(x == n){mark++;return;}for(int s = 0; s < n; s++){int m = 0; //标记是否有冲突棋子y = s;//把当前坐标放上棋子point[x][y] = 1;//cout<<"我放置了棋子在"<<'(' << x << ' ' << y <<')'<<endl;//当与他一行或一列或斜线有1时,停止循环for(int i = 0; i < x; i++){if(point[i][y] == 1){//cout<<'(' << x << ' ' << y <<')'<<"同列有棋子"<<'(' << i << ' ' << y <<')'<<endl;point[x][y] = 0;m = 1;break;}}for(int i = 0; i < y; i++){if(point[x][i] == 1){//cout<<'(' << x << ' ' << y <<')' << "同行有棋子"<<'(' << x << ' ' << i <<')'<<endl;point[x][y] = 0;m = 1;break;}}//判断左上斜线的1int x2 = x-1, y2 = y-1;while(x2 >= 0 && y2 >= 0){if(point[x2][y2] == 1){//cout<<'(' << x << ' ' << y <<')'<<"左上斜线有棋子"<<'(' << x2 << ' ' << y2 <<')'<<endl;point[x][y] = 0;m = 1;break;}x2--;y2--;}//判断右上斜线的1x2 = x-1;y2 = y+1;while(x2 >= 0 && y2 < n){if(point[x2][y2] == 1){//cout<<'(' << x << ' ' << y <<')'<<"右上斜线有棋子"<<'(' << x2 << ' ' << y2 <<')'<<endl;point[x][y] = 0;m = 1;break;}x2--;y2++;}if(m == 1) continue;//到这说明该位置可以放棋子,继续往下调用,换到下一行//cout<<'(' << x << ' ' << y <<')'<<"没有冲突的棋子,我接下来放" <<'(' << x+1 << ' ' << 0 <<')'<<endl;HanShu(x+1, 0);//回溯后棋子拿下point[x][y] = 0;}
}

全排列+n皇后问题(C++深度优先搜索与广度优先搜索)相关推荐

  1. 八数码深度优先搜索_深度优先搜索和广度优先搜索

    深度优先搜索和广度优先搜索 关于搜索&遍历 对于搜索来说,我们绝大多数情况下处理的都是叫 "所谓的暴力搜索" ,或者是说比较简单朴素的搜索,也就是说你在搜索的时候没有任何所 ...

  2. 算法十——深度优先搜索和广度优先搜索

    文章出处:极客时间<数据结构和算法之美>-作者:王争.该系列文章是本人的学习笔记. 搜索算法 算法是作用于数据结构之上的.深度优先搜索.广度优先搜索是作用于图这种数据结构之上的.图上的搜索 ...

  3. 深度优先遍历和广度优先遍历_图与深度优先搜索和广度优先搜索

    什么是图? 图是一种复杂的非线性表结构.由若干给定的点一级任意两点间的连线所构成.图通常用来描述事物之间的特定关系, 代表的就是事物, 线就是事物之间所具有的关系.例如社交网络就是一种典型的图关系, ...

  4. 深度优先搜索和广度优先搜索

    深度优先搜索和广度优先搜索 ​ 在人工智能的运筹学的领域中求解与图相关的应用中,这两个算法被证明是非常有用的,而且,如需高效地研究图的基本性质,例如图的连通性以及图是否存在环,这些算法也是必不可少的. ...

  5. 数据结构学习笔记——图的遍历算法(深度优先搜索和广度优先搜索)

    目录 一.图的遍历概念 二.深度优先搜索(DFS) (一)DFS算法步骤 1.邻接表DFS算法步骤 2.邻接矩阵DFS算法步骤 (二)深度优先生成树.森林 (三)DFS的空间复杂度和时间复杂度 三.广 ...

  6. 迷宫问题:深度优先搜索和广度优先搜索

    迷宫问题:深度优先搜索和广度优先搜索 1.深度优先搜索可以使用栈实现,栈顶元素为当前节点 2.当前节点搜索下一节点,判断节点是否走得通,如果走得通任意方向走一步,走不通一直弹出栈内元素,直到走得通 3 ...

  7. 学会二叉树不知道干啥?二叉树的深度优先搜索和广度优先搜索,我要打十个乃至二十个(打开你的LeetCode撸起来)学练并举

    目录 一. 图解二叉树的深度优先搜索 二. 二叉树的广度优先搜索  (层序遍历) 三. 打开LeetCode 撸起来 至此, 咱多少被刚刚的后序非递归搞得可能有点小晕晕的, 没事,层序简单呀....  ...

  8. 深度优先搜索与广度优先搜索区别和案例

    今天周末,心血来潮打开LeetCode做一道题: https://leetcode-cn.com/problems/number-of-enclaves/ 看到题,我的第一想法是: 从边缘的陆地开始, ...

  9. 深度优先搜索及广度优先搜索

    一.深度优先搜索. 1.主要思想:首先以一个未被访问过的顶点作为起始顶点,沿当前顶点走到未被访问顶点,当没有未被访问顶点时,返回上一个顶点,继续访问别的顶点,直到所有的顶点都被访问过. 2:主要通过循 ...

  10. 深度优先搜索和广度优先搜索及典例分析(走迷宫问题(BFS)和棋盘问题(DFS))

    搜索算法在实际编程应用中起着举足轻重的作用,学会掌握搜索算法并熟练应用搜索算法来解决实际问题不得不说是一件相当COOL的事,所以我将深度搜索和广度搜索认真地做了详细的总结,与诸君共勉,也方便以后查阅复 ...

最新文章

  1. MySQL 索引条件下推 Index Condition Pushdown
  2. linux内核启动时间优化
  3. 手写自己的MyBatis框架-V2.0配置文件
  4. .NET Core 3 对 IoT 应用程序的高级支持:System.Device.Gpio
  5. 下面哪个字段是http请求中必须具备的_理解HTTP协议-HTTP协议详解总结
  6. Android音频开发(六)音频编解码之初识MediaCodec上
  7. python作用域(scope)(三分钟读懂)
  8. python使用queue和线程池
  9. Java图形组件 OpenSwing
  10. HTML5本地存储初探
  11. element-ui分页器的使用
  12. 信号与线性系统翻转课堂笔记1
  13. java对接PayPal支付(v1)
  14. 今日头条信息流 - 广告策略
  15. mysql sql 按天分组统计_Mysql按日、周、月进行分组统计
  16. Keras LSTM教程
  17. 飞控学习常见典型问题集QA——无名创新(2022年4月15日)
  18. 王家林亲授《DT大数据梦工厂》大数据实战视频“Scala深入浅出实战经典” 第46讲视频、音频和PPT下载!
  19. scrapy中用来代替crawl 功能的main文件配置
  20. 设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

热门文章

  1. 基SpringBoot的智能社区警务管理平台
  2. 服务器版本信息泄露修改iis,IIS攻击与安全加固实例分析 -电脑资料
  3. redis删除策略和逐出策略
  4. 网站建设企业建站哪家好?来这里看看怎么选择
  5. java jaxb 注解_JAXB注解的使用详解
  6. 基于faster-rcnn网络的视力表字符检测
  7. [转载]修丕勋与林占令
  8. Redis源码剖析之内存淘汰策略(Evict)
  9. 在鬼语者中看到米帅(温特沃斯·米勒)
  10. .excel文件突然损坏变为.tmp格式解决办法