摘要: 解题思路:本题内容虽长,但很好理解。其实就是在矩阵(m*n)中找出在不同行不同列中m个数字的最大和。但还必须满足条件,关键在于后一行的(选中的)数所在的列必须大于该行(选中的)数所在的列。这是道经典的DP,状态转移方程为:dp[i][j]=max(dp[i][j-1], dp[i-1][j-1]+v[i][j]).View Code 1#include<iostream>2usingnamespacestd;3#defineMAX1054#definemax(a,b)((a)>(b)?(a):(b))5intv[MAX][MAX],dp[MAX][MAX];67intmain 阅读全文
posted @ 2012-02-19 11:44 笑巧 阅读(774) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个数n,在1+2+3+4+…+k中,求随意改变加减号能使其和(差)正好为n的k为多少,使得k最小。解题思路:每次累加i: 如果sum小于n则无论如何也不可能达到题意; 如果sum正好等于n则累加到这个k正好为答案;如果sum大于n时,则需要把前面的加号改为减号:如果改为-1,结果就减2,如果改为-2,结果就减4,以此类推,可以看出只要sum-n为偶数,则此时可以改sum结果为n,得答案。View Code 1#include<iostream>2usingnamespacestd;3intmain()4{5intn,i;6while(cin>>n)7{8in 阅读全文
posted @ 2012-02-19 10:21 笑巧 阅读(221) 评论(0) 推荐(0) 编辑