A. Currency System in Geraldion
刚开始以为是什么动态规划,直接在那里叫这可怎么办?后来又想到如果10里面的数可以拼出来,那么大的也可以拼出来了,于是这样写就过了。今天早上一看人家的代码,才发现如果一可以拼出来,那么其他都可以拼出来。所以只需要将输入的数排序,第一个是不是一考虑一下就可以了。自己思维还是不够。
#include<bits/stdc++.h>
using namespace std;
int a[1024],dp[1000000+5];
int main()
{
int i,j,n,f;
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
memset(dp,0,sizeof(dp));
f=0;
dp[0]=1;
for(i=1;i<=10;i++)
{
for(j=0;a[j]<=i;j++)
{
if(dp[i-a[j]]) {dp[i]=1;break;}
}
if(dp[i]==0) {f=1;break;}
}
if(f) printf("%d\n",i);
else printf("-1\n");
}
return 0;
}
这里就是将所以情况都枚举一下,就可以了。
#include<bits/stdc++.h>
using namespace std;
int f1(int a1,int b1,int a2,int b2,int a3,int b3)
{
if(a2+a3<=a1&&b2<=b1&&b3<=b1) return 1;
if(a2+a3<=b1&&b2<=a1&&b3<=a1) return 1;
if(b2+b3<=a1&&a2<=b1&&a3<=b1) return 1;
if(b2+b3<=b1&&a2<=a1&&a3<=a1) return 1;
if(a2+b3<=a1&&b2<=b1&&a3<=b1) return 1;
if(a2+b3<=b1&&b2<=a1&&a3<=a1) return 1;
if(b2+a3<=a1&&a2<=b1&&b3<=b1) return 1;
if(b2+a3<=b1&&a2<=a1&&b3<=a1) return 1;
return 0;
}
int main()
{
int a1,a2,a3,b1,b2,b3,f;
while(~scanf("%d%d",&a1,&b1))
{
scanf("%d%d",&a2,&b2);
scanf("%d%d",&a3,&b3);
f=f1(a1,b1,a2,b2,a3,b3);
if(f) printf("YES\n");
else printf("NO\n");
}
return 0;
}
当时没有想法,直接写了两题之后就去玩了。早上看了题解,发现者也是简单题,只需要做几条辅助线就可以实现了。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a1,a2,a3,a4,a5,a6,t;
while(~scanf("%d%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5,&a6))
{
t=(a1+a2+a3)*(a1+a2+a3)-a1*a1-a3*a3-a5*a5;
printf("%d\n",t);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-08 16:57:51