Leetcode 566. Reshape the Matrix 矩阵变形(数组,模拟,矩阵操作) 题目描述 在MATLAB中,reshape是一个非常有用的函数,它可以将矩阵变为另一种形状且保持数据不变. 已知一个由二维数组表示的矩阵,和两个正整数r(行),c(列),将这个二维数组变换为r*c的矩阵. 如果不能由原矩阵转换为r*c的矩阵就输出原矩阵,否则输出转换后的矩阵. 测试样例 Input: nums = [[1,2], [3,4]] r = 1, c = 4 Output: [[1,2,…
/* N*N矩阵的旋转 不开辟新空间 programmer:qpz time:2014-11-09 */ #include <iostream> using namespace std; //#define MAX 3 const int MAX=3; class cou{ private: int x; int y; char num[MAX][MAX]; public: cou(){} cou(char num[MAX][MAX]); void Prin(void); void rotat…
思路 题目链接 题意:题目中先给了一个N阶矩阵样子的字符,后给了一个mask,然后又给出你应该认识的一些单词,最后是让你输出最终字典序最小的一句话. 思路:根据题目要求模拟即可.这里会用到stringstream,学习一下.不过个人觉得比较重要的是矩阵旋转部分,下面附这一块的代码. void zhuan() { char temp[maxn][maxn]; memset(temp, 0, sizeof(temp)); //临时数组 for(int i = 0; i < N; i++) { for…
传送门 考场上并不会写二分的check函数,下来看了看题解发现真是妙极. 不难想到每次直接从四个角各按阶梯状拓展出合法区域A,再检验B是否合法就行了.(然而考场上写的弃疗了) 于是题解用了一些小技巧优化了一波. 我们在读入矩阵的时候可以存它在旋转0度,90度,180度,270度0度,90度,180度,270度0度,90度,180度,270度时的状态. 然后这四次拓展可以封装成为同一个函数. 突然好些了许多 代码…
传送门 1.模拟 easy #include <cstdio> #define N 500001 int n, m; int X[N], Y[N], x[N], y[N], a = 1, b = 1, p, q; char s[N][1]; int main() { int i; scanf("%d %d", &n, &m); for(i = 1; i <= n; i++) scanf("%d %d", &X[i], &am…
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是LeetCode第29篇,我们来看一道简单的矩阵旋转问题. 题意 题目的要求很简单,给定一个二维方形矩阵,要求返回矩阵旋转90度之后的结果. 下面我们来看两个例子: 题解 这个动图一看就明白了,也就是说我们需要将一个二维矩阵顺时针旋转90度.这个题意我们都很好理解,但是题目当中还有一个限制条件:我们不能额外申请其他的数组来辅助,也就是对我们的空间利用进行了限制. 如果没有这个条件限制其实很容易,我们只需要算出每一个坐标旋转之后的位…
题意:给出矩阵相乘的表达式,让你计算需要的相乘次数,如果不能相乘,则输出error. 思路: 参考的网站连接:http://blog.csdn.net/wangjian8006/article/details/8905295 刚开始想到用栈的,但不知道怎么下手.后来网上查了一下,其实可以用结构体定义一个矩阵的类型,建立关于该结构体的栈,这样操作起来就方便多了. 遇到'(',无视继续:遇到字母,压入栈顶:遇到')',将栈顶前两个矩阵压出,并加上其相乘次数,再将所得的矩阵压入栈顶: 这里解释这么做的…
题目链接 POJ2774 SPOJ1811 LCS - Longest Common Substring 比后缀自动机慢好多(废话→_→). \(Description\) 求两个字符串最长公共子串 \(Solution\) 任何一个子串一定是某个后缀的前缀 可以将两个字符串拼在一起,中间用一个从未出现过的字符隔开,这样ht[]的最大值就是答案? 不一定,最大的ht[]可能是由同一个字符串得到的,判一下属于哪个字符串即可 //3772K 516MS //SPOJ:26M 0.11s(N=5e5)…
题目链接 POJ2774 SPOJ1811 LCS - Longest Common Substring 确实比后缀数组快多了(废话→_→). \(Description\) 求两个字符串最长公共子串 \(Solution\) 对串A建立后缀自动机. A的SAM中包含A的所有子串,且根到每个节点的路径都是A的子串.如果B(的一部分?)匹配到了SAM上的某个节点,那么这便是AB的公共子串.求出这些点的max(len)即可. 用串B在SAM上逐位匹配,如果匹配,就继续沿着匹配边走: 否则,为了匹配当…
Problem description. The Fibonacci numbers defined as f(n) = f(n-1) + f(n-2) where f0 = 0 and f1 = 1. We define a function as follows D(n,x) = x + x^2 + 2x^3 + 3x^4 + 5x^5 + 8x^6 +...+f(n)x^n Given two integers n and x, you need to compute D(n,x) sin…