判断字符串数组能否首尾相连
题目详情:给定一组字符串,判断这些字符串能否首尾相连,即前面一个字符串的最后一个字母和紧跟着的字符串的第一个字母相同。
例如,给定arr[][] = {"gj","jl","dg","ad","gg"}
,可知其满足首尾相连,即ad, dg, gg, gj, jl
。
代码如下:
#include <cstring>
#include <iostream>
using namespace std;bool flag = false;
void swap(char **arr, int s, int i);
void fun(char **arr, int n, int k);
bool judge(char **arr, int n);int main() {int n;cin >> n;char **arr = new char*[n];for (int i = 0; i < n; ++i) {arr[i] = new char[100];memset(arr[i], 0, sizeof arr[i]);cin >> arr[i];}cout << judge(arr, n) << endl;return 0;
}bool judge(char **arr, int n) {fun(arr, n, 0);if (flag)return true;elsereturn false;
}void fun(char **arr, int n, int k) {if (k == n) { //for (int i = 0; i < n; ++i)// cout << arr[i] << '\t';//cout << endl;flag = true;return; } for (int i = k; i < n; ++i) { if (k > 0 && (arr[k-1][strlen(arr[k-1])-1] == arr[i][0])) { //k!=0,之前的0-k-1个字符串已经排好序,则判断k-1号字符串与之后的字符串swap(arr, k, i); fun(arr, n, k+1); swap(arr, k, i); }else if ( k==0 ) { //k=0,即第一个字符串与所有的字符串判断swap(arr, k, i); fun(arr, n, k+1); swap(arr, k, i); } else;} return;
} void swap(char **arr, int s, int i) { char *t = new char[100];memset(t, 0, 100);strcpy(t, arr[s]); strcpy(arr[s], arr[i]); strcpy(arr[i], t);delete[] t;
}
输入参数:
5
gj jl dg ad gg
输出结果:
//ad dg gg gj jl
1
回溯法:以深度优先遍历,一一试探。
判断字符串数组能否首尾相连相关推荐
- 判断字符串数组中的数字是否对称
分析以下需求,并用代码实现: (1)定义数字字符串数组{"010","3223","666","7890987",&qu ...
- 判断字符串数组中是否所有字符只出现了一次
题目:给定一个字符类型数组chas,判断chas中是否所有的字符都只出现过一次 要求1: 时间复杂度为O(N)的算法 思路:使用哈希表,记录每个字符出现是否在哈希表里出现,如果没有出现,则添加; 若重 ...
- 【我不熟悉的javascript】判断字符串数组内容是否相等的方法,不考虑顺序
单元测试例子如下 const compareArray = [{arr1: ['no', 'no', 'yes', 'yes'], // 数组1arr2: ['yes', 'yes', 'yes', ...
- 判断字符串数组是否为空
1.array == null 和array.length == 0的区别 int[] a; int[] b = null; int[] c = new int[3]; 打印数组a时:Error:ja ...
- C#判断字符串数组中是否有重复项
bool hasRepeat(string[] strs) {for (int i = 1; i < strs.Length; i++)for (int j = 0; j < i; j++ ...
- 给一个字符串数组,判断其是否是首尾相连的
package test1;import java.util.Arrays; /*** 给定字符串数组{"gj","jl","dg",&qu ...
- 判断一个字符串数组是否能组成首尾相连的环
题目 输入一组字符串 判断字符串是否组成环 例如: 输入:aes dwewe ea sd 输出:true 输入:as st ta 输出:false 解题思路 总体思想就是当前字符串找到一个能连接的就继 ...
- 字符串数组判断数字,字母汉字,
c++中判断字符串是否为数字的方法:cout << "请输入一个整数数组(不超过1000个):" << endl;17 cin >> arr[0 ...
- golang 包含 数组_在 Golang 中如何快速判断字符串是否在一个数组中
在使用 Python 的时候,如果要判断一个字符串是否在另一个包含字符串的列表中,可以使用in 关键词,例如: name_list= ['pm', 'kingname', '青南'] if 'king ...
最新文章
- Sql Server 中锁的概念
- OAuth 2 开发人员指南
- 学Java好还是学Python好?这里有些建议
- mysql流式查询mybatis_流式查询:MyBatis千万级数据查询解决方案,避免OOM
- 感恩被救赎——爱是恒久忍耐
- java菱形乱码 编码_【分享】Java开发过程中中文乱码问题总结
- WCF服务可靠性传输配置与编程开发(转)
- 正点原子STM32f4系列其他串口通信失败问题解决
- 学籍成绩管理系统c语言,学籍成绩管理系统UCDOS操作系统下C语言版本课程设计).doc...
- 编译龙芯PMON流程
- R语言如何做NMDS分析
- 从300行文件系统的实现内窥Linux VFS组织
- iOS 用户信息存储的工具类
- mysql多表sumif_MySQL与EXCEL sum sumif sumifs 函数结合_品牌汇总_20161101
- 安装包的原理与制作安装包的流程
- 区块链数据资源网站总结
- arduino用2个74HC595点亮2个4位共阳数码管
- Django基础九之中间件
- DB2重启数据库实例
- python自学课堂_3D图示Python标准自学教程入门篇
热门文章
- Apache Airflow系列文章
- 第二讲:项目运行环境 事业环境因素 (EEF) 和组织过程资产 (OPA)
- MATLAB Robotics System Toolbox学习笔记(一):一步一步建造一个机械臂
- 微信小程序监听服务器发送消息,微信小程序实时聊天WebSocket
- Python ffmpeg视频处理
- 传奇人物《周兴和》书连载23 劳燕分飞离故里
- 日语输入法键盘假名对应表
- 2022年康复医学治疗技术(师)考试题库
- 从C快速入门C++ (命名空间、引用、函数重载)
- 门诊地图导航怎么做,零成本的医院室内导航解决方案