首页 > 代码库 > ADV-caikuang
ADV-caikuang
#include<stdio.h> int step[99][99]; int sum; int min=999999; int cas; int N; int H; int V; int C1; int R1; int M1; int C2; int R2; int M2; int ans[15]; int bu[15]; int ju[15]; void ji(int n) { int i; int j; int a; for(i=0;i<H;i++) { sum=0; for(j=0;j<i;j++) { sum=sum+C1*step[n][j]; } if(sum>min) continue; for(a=j;a<H;a++) { sum=sum+C2*step[n][a]; } if(sum>min) continue; if(H-1-i-i==0||H-1-i-i==-1||H-1-i-i==1) { if(min>sum) { min=sum; } } else { if(H-1-i-i>0) sum=sum+(H-1-i-i)*R2; else sum=sum-(H-1-i-i)*R1; if(min>sum) { min=sum; } } } } void qu(int a,int st) { if(st==N) { sum=0; for(int i=0;i<N;i++) sum=sum+bu[i]; for(int i=0;i<=N-2;i++) sum=sum+(M1*M1+M2*M2)*(ju[i+1]-ju[i]); if(min>sum) { min=sum; } return; } for(int i=a;i<V;i++) { ju[st]=i; bu[st]=ans[i]; qu(i+2,st+1); } } int main() { freopen("in.txt","r",stdin); int o=1; int r; scanf("%d",&cas); while(o!=cas+1) { scanf("%d%d%d",&N,&H,&V); for(int i=0;i<V;i++) { for(int j=0;j<H;j++) { scanf("%d",&step[i][j]); } } scanf("%d%d%d",&C1,&R1,&M1); scanf("%d%d%d",&C2,&R2,&M2); for(int a=0;a<V;a++) { min=999999; ji(a); ans[a]=min; r=a; } if(r==0) { printf("Case #%d\n",o); printf("%d\n",min); } else { qu(0,0); printf("Csae #%d\n",o); printf("%d\n",min); } o++; } return 0; }
ADV-caikuang
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。