摘要:
超经典的动态规划,我就不说了. my code: #include #include int n; int a[101],s[101][101],t[101][101]; int i,j,k,temp,max,min; int main(){ while(scanf("%d",&n)!=-1){ i=1; while(in) temp=k%n; else... 阅读全文
摘要:
相当经典的动归. #include const int MAX=100001; int f[MAX]; struct{ int z,y; }arr[2*MAX]; int main(){ int N,n,i,j,max,num; while(scanf("%d",&N)!=-1){ i=1; while(i=0;){ max=0; for(... 阅读全文
摘要:
有点类似于求最大连通图,当然这类问题都有统一的解法,深搜或广搜. #include const int MAX=101; int n,m; int arr[MAX][MAX]; int f[MAX][MAX]; int LP(int i,int j){ int k,p,max=1; if(i=n||j>=m) return 0; if(arr[i][j]==0) re... 阅读全文
摘要:
有一个经典的dp题,当然为了提高效率还使用了记忆性搜索。是一道很难得的好题. #include const int MAX=101; int r,c; int h[MAX][MAX]; int f[MAX][MAX]; int LP(int i,int j){ int max=0,k,a[4]; if(f[i][j]!=-1) return f[i][j]; else if(... 阅读全文
摘要:
相信大家都知道什么是humble number.但我还是简短介绍一下,假设一个质数集合{2,3,5,7...},求一个整数列,他们的共同属性是所有的因子都是那个质数集合里的。现在问题是求给定的第N个这样的整数。如果质数只有3个或4个那么简单的搜索可能就行了,但是当数量很多时就会很耗时,所以可采用下面的方法。 #include int main(){ int h[5842];//表示所求的整数... 阅读全文
摘要:
题目大意是:字母A~Z,分别用1~26来表示。现在给你一字符串,比如25114,它可以被翻译为不同的字符串。问题就是求可以被分几种情况。相当于排列组合。 #include char str[5000]; int main(){ int i; int pre,cur,t; while(scanf("%s",str)&&str[0]!='0'){ pre=0;cur=1; ... 阅读全文
摘要:
输入第一行N,C,N物品的数量,C背包的大小 下一行输入背包的价值 下一行输入背包的体积 程序如下: #include typedef struct{ int v; int t; }mar; mar arr[1000]; int i; int N,C; int dp(int C,int i){ if(i=arr[i].t){ x=arr[i].v+dp(C-arr[i]... 阅读全文