一、涂条纹
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=0,minn=3000;//注意数据范围
char arr[55][55];
int i,j,k,g;
int main()
{
cin>>n>>m;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
cin>>arr[i][j];
}
}
for(i=1;i<=n-2;i++)
{
for(j=i+1;j<=n-1;j++)
{
ans=0;
for(k=1;k<=i;k++)
{
for(g=1;g<=m;g++)
{
if(arr[k][g]!='W')
{
ans++;
}
}
}
for(k=i+1;k<=j;k++)
{
for(g=1;g<=m;g++)
{
if(arr[k][g]!='B')
{
ans++;
}
}
}
for(k=j+1;k<=n;k++)
{
for(g=1;g<=m;g++)
{
if(arr[k][g]!='R')
{
ans++;
}
}
}
minn=min(minn,ans);
}
}
cout<<minn<<endl;
return 0;
}
二、[NOIP2008 提高组] 火柴棒等式
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a,b,c;
int sum,ans=0;
int arr[10]={6,2,5,5,4,5,6,3,7,6};
for(int i=0;i<1111;i++)
{
for(int j=0;j<1111;j++)
{
a=i;
b=j;
c=i+j;
sum=4;//记得加等号和加号
while(a/10!=0)
{
sum+=arr[a%10];
a/=10;
}
sum+=arr[a];
while(b/10!=0)
{
sum+=arr[b%10];
b/=10;
}
sum+=arr[b];
while(c/10!=0)
{
sum+=arr[c%10];
c/=10;
}
sum+=arr[c];
if(sum==n)
{
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
三、kkksc03考前临时抱佛脚
#include<bits/stdc++.h>
using namespace std;
int arr[5],a[25],b[5000];
int i,j,k,sum,ans;
int main()
{
for(int i=1;i<=4;i++)
cin>>arr[i];
for(int i=1;i<=4;i++)
{
sum=0;
for(int j=1;j<=arr[i];j++)
{
cin>>a[j];
sum+=a[j];
}
for(int j=1;j<=arr[i];j++)
for(int k=sum/2;k>=a[j];k--)
b[k]=max(b[k],b[k-a[j]]+a[j]);
ans+=sum-b[sum/2];
for(int j=1;j<=sum/2;j++)
b[j]=0;
}
cout<<ans<<endl;
return 0;
}