ll【ybt动态规划】筷子

This commit is contained in:
James 2020-04-24 17:05:17 +08:00
parent 840982aeee
commit b4de50b5d1
9 changed files with 84 additions and 1 deletions

View File

@ -1,4 +1,3 @@
#include <algorithm>
#include <iostream>
using namespace std;
int main()

View File

@ -0,0 +1,3 @@
# 标题
* 内容

View File

@ -0,0 +1,21 @@
# 【ybt动态规划】筷子
【问题描述】
A先生有很多双筷子。确切的说应该是很多根因为筷子的长度不一很难判断出哪两根是一双的。这天A先生家里来了K个客人A先生留下他们吃晚饭。加上A先生A夫人和他们的孩子小A共K+3个人。每人需要用一双筷子。A先生只好清理了一下筷子共N根长度为T1,T2,T3,……,TN.现在他想用这些筷子组合成K+3双使每双的筷子长度差的平方和最小。(怎么不是和最小这要去问A先生了呵呵)
【输入格式】
输入文件共有两行第一行为两个用空格隔开的整数表示N,K(1≤ N ≤100, 0< K<50)第二行共有N个用空格隔开的整数为Ti.每个整数为150之间的数
【输出格式】
输出文件仅一行。如果凑不齐K+3双输出-1否则输出长度差平方和的最小值。
【输入样例】
10 1
1 1 2 3 3 3 4 6 10 20
【输出样例】
5
说明:
第一双 1 1
第二双 2 3
第三双 3 3
第四双 4 6
(1-1)^2+(2-3)^2+(3-3)^2+(4-6)^2=5

View File

@ -0,0 +1,34 @@
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int kuaiz,ke,ren=3,a[101];
cin>>kuaiz>>ke;
for(int i=1;i<=kuaiz;i++){
cin>>a[i];;
}
ren+=ke;
if(ren*2>kuaiz){
cout<<"-1";
return 0;
}
sort(a+1,a+kuaiz+1);
int f[101][51]={0};
bool pan[101][51]={0};
for(int i=2;i<=kuaiz;i++){
for(int j=1;j<=ren;j++){
if(f[i-1][j]==0&&pan[i-1][j]==0){
f[i][j]=f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]);
pan[i][j]=1;
}else{
f[i][j]= min (f[i-1][j],f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1]));
pan[i][j]=1;
}
//cout<<i<<" "<<j<<" "<<f[i][j]<<endl;
if(j==i/2){
break;
}
}
}
cout<<f[kuaiz][ren];
}

BIN
ll1882_chopsticks/main.exe Normal file

Binary file not shown.

View File

@ -0,0 +1,2 @@
10 1
1 1 2 3 3 3 4 6 10 20

View File

@ -0,0 +1,2 @@
10 2
1 1 2 3 3 3 4 6 10 20

View File

@ -0,0 +1,4 @@
30 7
1 1 2 3 3 3 4 6 10 20
1 1 2 3 3 3 4 6 10 20
1 1 2 3 3 3 4 6 10 20

View File

@ -0,0 +1,18 @@
## z:\Chao\src\ll1882_chopsticks\test\in.txt
2020/04/24 ÖÜÎå 16:56:52.53
5
-----------------------------------------------
Process exited after 150 ms with return value 0
## z:\Chao\src\ll1882_chopsticks\test\in2.txt
2020/04/24 ÖÜÎå 16:56:52.53
-1
-----------------------------------------------
Process exited after 80 ms with return value 0
## z:\Chao\src\ll1882_chopsticks\test\in3.txt
2020/04/24 ÖÜÎå 16:56:52.53
0
-----------------------------------------------
Process exited after 70 ms with return value 0