[usaco3.2.4]ratios

本文提供了一种使用C++语言解决比例题目时采用的高效枚举算法,通过直接枚举的方式,简化了计算过程,提高了求解效率。文中详细介绍了算法实现步骤,包括初始化数据结构、枚举变量范围、计算比例值等关键环节,并通过实例展示了算法应用。同时,提供了代码示例和结果输出,便于读者理解和实践。

  题目传送门:http://www.nocow.cn/index.php/Translate:USACO/ratios

  这道题也是直接枚举。。。

  

/*
ID:abc31261
LANG:C++
TASK:ratios
*/

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int a[5][5];
int main()
{
    int i,j,l,k,p,ansmin=0x7f,ansfen,ans[5],count[4],sum[4],num[4];
    bool flag=false;
    freopen("ratios.in","r",stdin);
    freopen("ratios.out","w",stdout);
    for (i=0;i<=3;i++)scanf("%d%d%d",&a[i][1],&a[i][2],&a[i][3]);
    for (num[1]=0;num[1]<=100;num[1]++)
        for (num[2]=0;num[2]<=100;num[2]++)
            for (num[3]=0;num[3]<=100;num[3]++)
            {
                memset(count,0,sizeof(count));
                memset(sum,0,sizeof(sum));
                for (k=1;k<=3;k++)
                    for (p=1;p<=3;p++)sum[p]+=num[k]*a[k][p];
                sum[0]=sum[1]+sum[2]+sum[3];
                for (k=1;k<=3;k++)
                    if (sum[k]%a[0][k]==0 && a[0][k]!=0)count[k]=sum[k]/a[0][k];
                if (count[1]==count[2] && count[2]==count[3] && (count[1]!=0||count[2]!=0||count[3]!=0) && sum[0]<ansmin)
                {
                   flag=true;
                   memcpy(ans,num,sizeof(num));
                   ansfen=count[1];
                   ansmin=sum[0];
                }
            }
    if (flag)printf("%d %d %d %d\n",ans[1],ans[2],ans[3],ansfen);
       else printf("none\n");
    return 0;
}
                    

 

转载于:https://www.cnblogs.com/Sun-Sea/p/5143764.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值