常规C中,比较简单的方法
2024-06-01 10:38:49
发布于:安徽
77阅读
0回复
0点赞
我用的是C,经分析凑n元应该大部分用十一元的,因此一元最多用4张(5张就被1张五元替了)五元最多用4张(同理),而且十一元的张数不会少于n/11-2,不会多于int(n/11),我用的是有限遍历找出所有可能中最少的张数,应该是用时和空间常规方法中最少的,代码如下:
#include <stdio.h>
int main()
{
int a,b,c,n,x,y,t1,t2=2000000;
scanf("%d",&n);
x=int(n/11)+1;
for (a=0;a<5;a++)
for(b=0;b<5;b++)
for(c=x-2;c<x;c++)
{
if (a+b5+c11==n)
{
t1=a+b+c;
if (t1<t2) t2=t1;
}
}
printf("%d",t2);
return 0;
}
全部评论 2
看看我的,我只要用3*7=21次就能过:
# include <bits/stdc++.h> using namespace std ; int i,j,k; int main ( ) { int n,res = 1e9; cin>>n; for(i = max(n/11-3,0);i<=n/11;i++){ int l = n-i*11; int ans = i+l/5+l%5; res = min(ans,res); } cout<<res; return 0 ; }
1周前 来自 江西
0此程序最多循环553=75次。用时应该是所有方法中用时比较少的了。
2024-06-01 来自 安徽
0
有帮助,赞一个