【出错记录】关于DP中数组维度顺序

#include <cstdio>
#include <algorithm>

const int MAXN = 37;

int n, m, dp[MAXN][MAXN];

int main() {
	scanf("%d%d", &n, &m);

	dp[1][0] = 1;                        // 错误代码
	for (int i = 1; i <= n; i++) {      
		for (int j = 1; j <= m; j++) {
			dp[i][j] = dp[i == 1 ? n : i - 1][j - 1] + dp[i == n ? 1 : i + 1][j - 1];
		}
	}

	printf("%d\n", dp[1][m]);

//	dp[0][1] = 1;                        正解
//	for (int i = 1; i <= m; i++)
//		for (int j = 1; j <= n; j++)
//			dp[i][j] =  dp[i - 1][j == 1 ? n : j - 1] + dp[i -1][j == n ? 1 : j + 1];
//
//	printf("%d\n", dp[m][1]);
	return 0;
}

  DP入门。

如果按照第一种,dp [ 球在谁手里 ] [ 第几轮], 那么就直接一个人过了全部轮数,可想而知,肯定有些状态是转移不到的。

第二种将每一轮里每个人的状态都转移到了。

原文地址:https://www.cnblogs.com/ExileValley/p/8443052.html

时间: 2024-08-30 16:30:32

【出错记录】关于DP中数组维度顺序的相关文章

Mathab和Python的numpy中的维度顺序

本文比较Matlab和Python的numpy在维度索引方面的不同点: 1.索引的起始点不同:Matlab起始位置的索引为1,Python为0 2.索引的括号不同:Matlab中元素可以通过小括号表示索引,Python中用中括号: Matlab中a(1, 2)表示a的第一行,第二列的元素 Python的numpy中a[1, 2]表示a的第二行,第三列的元素 Matlab中a(:, 1)表示a第一列的所有元素 Python的numpy中a[:, 1]表示a第二列的所有元素 注意到:两者的最后一个索

24、输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。

输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变.  思路:新建一个数组先把原数组中的奇数push进去再把偶数push进去,然后用新数组数据覆盖原数组即可 复杂度O(n),用空间换时间 class Solution { public:     void reOrderArray(vector<int> &array) {         vector<int&

调整数组中数字的顺序,使得所有奇数位于数组的前半部分

输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分.要求时间复杂度为O(n),不要求保留数组元素的相对位置. 解析:可以维护两个指针:第一个指针初始化为数组的第一个数字,它只向后移动:第二个指针初始化为数组的最后一个数字,它只向前移动.在两个指针相遇之前,第一个指针总是位于第二个指针的前面.如果第一个指针指向的数字是偶数而第二个指针指向的数字是奇数,就交换这两个数字. 方法一: void patition(ref int[] arr, int n)

调整该数组中数字的顺序,奇数在前,偶数在后

题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. class Solution { public: void reOrderArray(vector<int> &array) { vector<int> a,b; for(int i=0;i<array.size();i++) { if(array[i]%2==1) a.push_bac

PHP中数组的foreach遍历顺序跟键值的关系

近两天,在做一个项目,遇到一个该用数据存储ID做键值还是用数据排序SORT_NO做数组键值的问题,考虑到如果使用数据存储ID作为键值放入数组遍历数组时会不会影响排序的问题,经过查询与验证,得到答案:foreach遍历数组的顺序是按照值存入数组的先后顺序进行遍历的,此为线性遍历,不受数组键值的大小顺序影响. 下面写个简单的例子描述一下问题: 数据库存储user:   自增ID 排序号SORT_NO 值VALUE 1 3 张三 2 2 李四 3 1 王五 通过sql语句:“select ID,SOR

HDU 1024 Max Sum Plus Plus --- dp+滚动数组

HDU 1024 题目大意:给定m和n以及n个数,求n个数的m个连续子系列的最大值,要求子序列不想交. 解题思路:<1>动态规划,定义状态dp[i][j]表示序列前j个数的i段子序列的值,其中第i个子序列包括a[j], 则max(dp[m][k]),m<=k<=n 即为所求的结果 <2>初始状态: dp[i][0] = 0, dp[0][j] = 0; <3>状态转移: 决策:a[j]自己成为一个子段,还是接在前面一个子段的后面 方程: a[j]直接接在前面

C++ 中数组做参数的分析

C++ 中数组做参数的分析 1.数组降价问题? "数组引用"以避免"数组降阶",数组降阶是个讨厌的事,这在C语言中是个无法解决的问题,先看一段代码,了解什么是"数组降阶" 1 #include <IOSTREAM> 2 using namespace std; 3 4 void Test( char array[20] ) 5 { 6 cout << sizeof(array) << endl; // 输出 4

关于字符串判断的几个常用属性 以及简单项目实现中数组运用的初步思想 蓝懿教育

Label.numberOfLines 可以控制其内的行数 若=0 只要空间够 可以无数行 若=1 1行 : 若=2 2行:类推 UIbutton 通过代码设置字 和 图片 UIbutton *l1=[UIbuttom alloc]initwithframe:CGrectmake…. [l1 settitle:@“111” for state:UIControlStateNormal];   按键上会显示111 [l1 setimage:[UIimage imagenamed:@“…”] for

C#中数组Array、ArrayList、泛型List&lt;T&gt;的比较

在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序集合.数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合. Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义. 数组在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也非常简单. Array数组具体用法: using System; names