此题第七篇题解共有两个代码,第一个为错解,第二个做法和第二篇题解做法完全一致,却比第二篇题解晚了一年,请求撤下。
第二篇题解代码如下
#include<bits/stdc++.h>
using namespace std;
int Left,Right,minn,ans;
int s[5];
int a[21][5];
void search(int x,int y){
if(x>s[y]){
minn=min(minn,max(Left,Right));
return;
}
Left+=a[x][y];
search(x+1,y);
Left-=a[x][y];
Right+=a[x][y];
search(x+1,y);
Right-=a[x][y];//毫无技巧的搜索回溯
}
int main(){
cin>>s[1]>>s[2]>>s[3]>>s[4];
for(int i=1;i<=4;i++){//减少码量
Left=Right=0;
minn=19260817;
for(int j=1;j<=s[i];j++)
cin>>a[j][i];
search(1,i);
ans+=minn;
}
cout<<ans;
return 0;
}
第七篇题解代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
int l,r,minn,tot=0;
int s[5]={0};
int a[5][21]={0};
void doit(int x,int y){
if(y>s[x])
{
minn=min(minn,max(l,r));
return;
}
l+=a[x][y];
doit(x,y+1);
l-=a[x][y];
r+=a[x][y];
doit(x,y+1);
r-=a[x][y];
}
int main()
{
int i,j;
cin>>s[1]>>s[2]>>s[3]>>s[4];
for(i=1;i<=4;i++)
{
minn=114514;
l=0;
r=0;
for(j=1;j<=s[i];j++)
{
cin>>a[i][j];
}
doit(i,1);
tot+=minn;
}
cout<<tot<<endl;
}
可以看到,只是改了几个变量和代码习惯,不是抄袭就是方式相同