Hi~~ 欢迎来到我的博客~~
文档
帮助
示例
社区
博客
源码
给你一个由n个整数组成的数组a。在一次移动中,您可以选择两个下标 1≤i,j≤n,i≠j并且设置ai:=aj。您可以执行这样的移动任意次数(可能是零次)。您可以在不同的操作中选择不同的下标。操作:=是赋值的操作(即选择 i 和 j 并用 aj 替换 a i)。你的任务是判断是否有可能得到一个元素之和为奇数(不能被2整除)的数组。
一个如下的 6×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。
行号 1 2 3 4 5 6
列号 2 4 6 1 3 5
这只是棋子放置的一个解。请编一个程序找出所有棋子放置的解。并把它们以上面的序列方法输出,解按字典顺序排列。请输出前 3 个解。最后一行是解的总个数。
搜索算法是利用计算机的高性能来有目的的穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。搜索过程实际上是根据初始条件和扩展规则构造一棵解答树并寻找符合目标状态的节点的过程。
给一个实例来了解这两种算法:
一般形容深度搜索就是不撞南墙不回头,这个形容算非常贴切了,因为它相当于按照一定的顺序不断地走,直到走到终点位置,然后形成一种解,判断这种解符不符合我们题目的最优解。
那我们如何实现呢?首先,我们先规定它走的顺序,我们先让他向下,直到撞墙不能再向下的时候改变方向,我们用递归实现
给你一个数组a,注意下标从0开始 如果数组中的每个奇数下标为奇数且数组中的每个偶数的下标为偶数则叫好数组否则就是不好数组 比如[2,3,4,5]和[0,17,0,3]就是好数组,[2,4,6,7]就不是好数组 但是你可以通过交换元素来使不好数组变成好数组 一次交换可以使数组中两个任意元素进行交换(两个不相邻的元素也是可以的) 如果能变成好数组请求出最小交换次数,否则就输出-1
一天,天上掉下来了一个可爱的小妹妹,小妹妹天天缠着你给她讲故事。并且让你在N天内给她讲K(K ≤ N)个不同小故事。你把你知道的所有K个故事从1到K进行编号。她每天会要求你讲某一个小故事,例如第i天她会要求你给他讲第ai个小故事。 由于小妹妹有间歇性失忆,所以她可能会在一些天内要求你讲你已经讲过的故事。如果你每天都按照她的要求来的话,可能会出现无法在N天内讲完K个故事的情况(小妹妹可能没有要 求过讲某个故事)
现在给你一个数n判断 n的每一位数字是否都不相同
一个数字n1<n<1000000
YES
所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最优解。也就是说,不从整体最优上加以考虑,它所做出的仅仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性(即某个状态以后的过程不会影响以前的状态,只与当前状态有关。)所以,对所采用的贪心策略一定要仔细分析其是否满足无后效性。
建立数学模型来描述问题把求解的问题分成若干个子问题对每个子问题求解,得到子问题的局部最优解把子问题的解局部最优解合成原来问题的一个解
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
1000、1089—1096、1001
2000—2011、2039
1720、1062、2104、1064、2734、1170、1197、2629
2012—2030、2032、2040、2042、2054、2055