4123: 马走日,2797:最短前缀 Trie,2362:Square 能否拼接为正方形

4123: 马走日 深度优先搜索 + 回溯

///马走日
int f[21][22],n,m,t; //f数组记录点有没有走过int x[10]={-2,-2,-1,1,2,2,1,-1},y[10]={-1,1,2,2,1,-1,-2,-2};//八个方向
int x1,y1,ans;
void dfs(int a,int b)   //搜索过程
{bool p=true;    //标记,判断马是否可以遍历整个棋盘for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(f[i][j]==0) //如果该点走过{p=false;   //标记为错误break; //结束内层循环}}}if(p==true) //如果可以遍历整个棋盘,就将方法数加1{ans++;return; //不用在搜下去了}for(int i=0;i<=7;i++)   //枚举马走的8个方向{int l=a+x[i];int k=b+y[i];if(f[l][k]==1)  //如果该点曾经走过,就结束当此循环continue;if(l>0&&l<=n&&k>0&&k<=m)    //判断是否越界{f[l][k]=1;   //将该点标记为1,表示不能走了dfs(l,k);       //将当前坐标作为新的起点,继续递归马要走的下一步f[l][k]=0;  //回溯}}
}int main4123() {scanf("%d",&t); //输入有多少组测试数据for(int i=1;i<=t;i++){scanf("%d %d %d %d",&n,&m,&x1,&y1); //输入起始坐标与终点坐标x1++;y1++;memset(f,0,sizeof(f));  //将f数组清空f[x1][y1]=1;    //起点不能再走ans=0;      //方案数清0dfs(x1,y1);//开始搜索,将起点的坐标作为第一个搜索的printf("%d\n",ans); //输出方案数}
}

2797:最短前缀 Trie

利用字典树实现,当节点的num为1时,说明为唯一的前缀 

//[openjudge] 2797最短前缀 Trie
struct Trie
{Trie *next[26];int num;Trie(){for (int i = 0; i < 26; i++)next[i] = NULL;num = 0;}
};
Trie root;
void insert(char *s){Trie *p = &root;for (int i = 0; s[i] ; ++i) {int tt = s[i] - 'a';if (p->next[tt]==NULL)p->next[tt] = new Trie;p = p->next[tt];p -> num++;}
}void find(char *s){Trie *p = &root;for (int i = 0; s[i] ; ++i) {int tt = s[i] - 'a';if (p->next[tt]==NULL)return;p = p->next[tt];printf("%c",s[i]);if (p->num==1)return;}
}int main2797()
{int n = 0;char word[1010][22];while (~scanf("%s", word[n])){insert(word[n]);n++;}for (int i = 0; i < n; ++i) {printf("%s ", word[i]);find(word[i]);printf("\n");}return 0;
}

2362:Square  能否拼接为正方形  DFS+回溯

// dfs时带返回值 回溯时与不带返回值的不一样,判断终止条件也不太一样
// 判断终止条件及终止条件应该有哪些变化时,只需举一个正确终止时的情况去判断

int visit[99999];int ave;
int number[99999];int n,m;
bool dfs_square(int sum , int index , int cnt){if (sum == ave){cnt ++;if (cnt==3)return true;sum = 0;//搜索成功某一条边时,要初始化sum和indexindex = 0;}for (int i = index; i < m; ++i) {if (sum + number[i]>ave)break;if (!visit[i]){visit[i] = 1;if(dfs_square(sum + number[i],i+1,cnt))return true;visit[i] = 0;//注意,搜索失败,回溯}}return false;
}int square(){cin>>n;while (n--){cin >> m;int sum = 0;for (int i = 0;i<m;i++){cin>>number[i];sum += number[i];}if (sum%4)printf("no\n");else {memset(visit,0, sizeof(visit));sort(number,number + m);ave = sum / 4;if(dfs_square(0,0,0))printf("yes\n");elseprintf("no\n");}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端学习(1993)vue之电商管理系统电商系统之根据id删除数据

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

苹果开发者地址1

https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/ra/ng/app转载于:https://www.cnblogs.com/zhangchengyuan/p/5623348.html

C++算法一些常用的stl函数

1.lower_bound( )和upper_bound( ) lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的 在从小到大的排序数组中&#xff0c; lower_bound( begin,end,num)&#xff1a;从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字&a…

LINUX 常用命令集合

su su命令是最基本的命令之一&#xff0c;常用于不同用户间切换。例如&#xff0c;如果登录为 user1&#xff0c;要切换为user2&#xff0c;只要用如下命令&#xff1a; $su user2 然后系统提示输入user2口令&#xff0c;输入正确的口令之后就可以切换到user2。完成之后就可…

前端学习(1994)vue之电商管理系统电商系统之通过编程导航跳转到商品导航界面

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

转载CSDN博客步骤

转载CSDN博客步骤&#xff1a; 1.CSDN博客页面右键&#xff0c;点击【检查】 点击检查后&#xff0c;页面右侧出现html代码&#xff0c;如下图 2.如果需要转载全文&#xff0c;则在html代码下侧点击选中article_content 即可&#xff0c;会在代码框中自动选中article_co…

android深度探索 HAL及驱动开发 第八章

第八章 读书笔记 本章主要讲蜂鸣器的驱动&#xff0c;蜂鸣器是S3cC6410开发板上带的一个硬件设备&#xff0c;本节将介绍蜂鸣器的实现原理&#xff0c;并实现一个完整的蜂鸣器驱动。本节讲介绍把linux驱动分成多个文件的方式。这些文件中的数据结构、函数的代码也可以被多个不同…

前端学习(1995)vue之电商管理系统电商系统之添加页面的基本结构

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

JDK1.7和JDK1.8中HashMap是线程不安全的,并发容器ConcurrentHashMap模型

一、HashMap是线程不安全的 前言 只要是对于集合有一定了解的一定都知道HashMap是线程不安全的&#xff0c;我们应该使用ConcurrentHashMap。但是为什么HashMap是线程不安全的呢&#xff0c;之前面试的时候也遇到到这样的问题&#xff0c;但是当时只停留在***知道是***的层面上…

前端学习(1996)vue之电商管理系统电商系统之美化步骤条

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

三种基本背包问题

一、0/1背包问题 问题描述&#xff1a;有n件物品和容量为m的背包 给出i件物品的重量以及价值 求解让装入背包的物品重量不超过背包容量 且价值最大 。 特点:这是最简单的背包问题&#xff0c;特点是每个物品只有一件供你选择放还是不放。 ① 二维解法 设f[i][j]表示前 i 件物品…

java中sesion

Session*Cookie基于客户端&#xff0c;不安全&#xff0c;并且大小和个数的限制。*Session域对象&#xff0c;范围一次会话范围&#xff0c;存个人相关的数据。*setAttribute(String name,Object value);*Object getAttribute(String name);*String getId() 获取session的唯一的…

前端学习(1997)vue之电商管理系统电商系统之渲染tab栏标签

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

LeetCode刷题过程中的一些小tips

0. 1. 发现没&#xff0c;与数组遍历、当前元素和前后元素大小比较 相关的都用单调栈 2. sql运行顺序查一下&#xff08;运行顺序依次是from、where、group by、select order by。先根据s1.Id进行分组&#xff0c;然后计算(count)组内大于等于score的个数(去重)&#xff0c;也…

Android之WebView网页滚动截图

WebView 网页滚动截屏&#xff0c;可对整个网页进行截屏而不是仅当前屏幕哦&#xff01; 注意若Web页面存在position:fixed; 的话得在调用前设置为 position:absolute; 哦&#xff0c;否则会出现很多次的&#xff0c;请看下面的具体解说吧&#xff01;&#xff01; private st…

前端学习(1998)vue之电商管理系统电商系统之实现步骤条和tab栏的数据

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

反转链表--清晰易懂的两种方法

反转一个单链表。如下示例:&#xff1a; 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL public class ListNode {int val;ListNode next;ListNode(int x) {val x;} }一、 迭代法&#xff1a; 注意观察示例&#xff1a;1->2->3-…

asp.net core 在Ubuntu 运行

asp.net core 在Ubuntu 运行 环境: Ubuntu 16.04dotnet-dev-1.0.0-preview2-003121Visual Studio 2015 update 3 Ubuntu 安装.net core 参考:https://www.microsoft.com/net/core#ubuntu 1.添加源 sudo sh -c echo "deb [archamd64] https://apt-mo.trafficmanager.net/re…

前端学习(1999)vue之电商管理系统电商系统之分析表单的数据

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

docker中的容器和镜像

最近学习了docker&#xff0c;感觉容器和镜像学的有点模糊。 特别是镜像和容器&#xff0c;感觉完全分不开&#xff0c;所以在此学习&#xff0c;然后总结了一下&#xff0c;便于后面的学习。 *************** 补充&#xff1a;经过我的一段时间使用&#xff0c;现在再来说一…