Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
实在找不到错,贴出代码求助,或求特殊数据?一般的数据都过了#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int price[95][95],totalP[95][95],pos[95][95],f[95],k,l; // tatolP[i][j]表示把前i个字母安排在j个键上的最小代价,pos[i][j]表示把1-i分成j段最后一个分段符的开始位置 char key_num[95],aphabet[95]; int keynum;//显示的键 //初始化price[][],price[i][j]表示将序列[i, j]安排到一个按键上的代价; void SetPrice(){ for(int i = 0 ; i < l ; i++){ for(int j = i ; j < l ; j++){ int z = 1; for(int k = i ; k <= j ; k++){ price[i][j] = z*f[k] + price[i][j]; z++; } } } } void DP(){ for(int i = 1 ; i <= l ; i++ ){ totalP[i][1] = price[0][i-1]; } for(int i = 1 ; i <= k ; i++ ){ totalP[i][i] = 0; for(int j = 0 ; j < i ; j++){ totalP[i][i] += price[j][j]; } } for(int i = 3 ; i <= l ; i++){ for(int j = 2 ; j <= k && j < i; j++){ totalP[i][j] = 2147483647; for(int m = j-1 ; m <= i-1 ; m++){ if(totalP[m][j-1] + price[m][i-1] < totalP[i][j]){ totalP[i][j] = totalP[m][j-1] + price[m][i-1]; pos[i][j] = m; } } } } } void printf_result(int l,int k){ if(k == 1){ printf("%c: ",key_num[keynum++]); for(int i = 0 ; i < l ; i++){ printf("%c",aphabet[i]); } printf("\n"); return; } // if(l == k){ // printf("%c: ",key_num[keynum++]); // for(int i = 0 ; i < l ; i ++){ // printf("%c",aphabet[i]); // } // printf("\n"); // return ; // } printf_result(pos[l][k],k-1); printf("%c: ",key_num[keynum++]); for(int i = pos[l][k] ; i < l ; i++){ printf("%c",aphabet[i]); } printf("\n"); } int main() { int n; scanf("%d",&n); int x = 1; while(x <= n){ memset(price,0,sizeof(price)); memset(totalP,0,sizeof(totalP)); memset(pos,0,sizeof(pos)); keynum = 0; scanf("%d %d",&k,&l); int i; scanf("%s",key_num); scanf("%s",aphabet); for(i = 0 ; i < l ; i++){ scanf("%d",&f[i]); } SetPrice(); DP(); printf("Keypad #%d:\n",x); printf_result(l,k); printf("\n"); x++; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator