01.27

2023-11-07 00:58
文章标签 01.27

本文主要是介绍01.27,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1,
int jishu (int sum1,int sum2,int sum3)//首先在这里可以做一个函数,这个函数的作用很简单,就是判断是不是1到9都有了: 
{int i1,i2,i3,j1,j2,j3,k1,k2,k3;i1=sum1%10;i2=(sum1/10)%10;i3=sum1/100;j1=sum2%10;j2=(sum2/10)%10;j3=sum2/100;k1=sum3%10;k2=(sum3/10)%10;k3=sum3/100;//拆分每个三位数,相信这个大家都看得懂吧; if ((i1*i2*i3*j1*j2*j3*k1*k2*k3==362880)&&(i1+i2+i3+j1+j2+j3+k1+k2+k3==45)) return 1;//这里稍微说明一下://1到 9的和是45,乘积是362880,没有其他的九个数是能模仿出来的,在这里用了个小技巧,节约时间。 else return 0; 
}
2.洛谷P1464 Function

对于一个递归函数w(a,b,c)

如果a<=0 or b<=0 or c<=0就返回值1.

如果a>20 or b>20 or c>20就返回w(20,20,20)

如果a<b并且b<c 就返回w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c)

其它别的情况就返回w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1)

这是个简单的递归函数,但实现起来可能会有些问题。当a,b,c均为15时,调用的次数将非常的多。你要想个办法才行.

/*

absi2011 : 比如 w(30,-1,0)既满足条件1又满足条件2

这种时候我们就按最上面的条件来算

所以答案为1

*/

输入输出格式

输入格式:

会有若干行.

并以-1,-1,-1结束.

保证输入的数在-9223372036854775808~9223372036854775807之间

并且是整数

输出格式:

输出若干行

格式:

[b]w(a,_b,_c)_=_你的输出(_代表空格)[/b]

题解

#include<bits/stdc++.h>//万能头文件
using namespace std;
long long f[25][25][25];//怕数据太大,用了long long,记录已计算过的w(a,b,c)的值
long long dfs(long long a,long long b,long long c)//深搜函数dfs,计算w(a,b,c)的值
{if(a<=0||b<=0||c<=0) return 1;//如果有小于等于0的,返回1if(a>20||b>20||c>20) return dfs(20,20,20);//如果有大于20的,返回w(20,20,20)if(a<b&&b<c) {if(f[a][b][c]==-1) f[a][b][c]=dfs(a,b,c-1)+dfs(a,b-1,c-1)-dfs(a,b-1,c);}//如果a<b且b<c,没被计算过,就进行计算,保留结果else if(f[a][b][c]==-1) f[a][b][c]=dfs(a-1,b,c)+dfs(a-1,b-1,c)+dfs(a-1,b,c-1)-dfs(a-1,b-1,c-1);//如果前面都不对,没被计算过,就进行计算,保留结果return f[a][b][c];//最后返回值
}
int main()//愉快的开始了主程序
{memset(f,-1,sizeof(f));//将所有记忆物清除long long a,b,c;do{cin>>a>>b>>c;if(a!=-1||b!=-1||c!=-1) printf("w(%d, %d, %d) = %d\n",a,b,c,dfs(a,b,c));//中间的空格是坑}while(a!=-1||b!=-1||c!=-1);//让里面先输入,再判断return 0;//愉快的结束了主程序
}

这篇关于01.27的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/360161

相关文章

01.27 Day 8 - 间隙锁和 next-key lock

大家好,我是 Snow Hide,作为《MySQL 实战》这个专栏的学员之一,这是我打卡的第 8 天,也是我第 51 次进行这种操作。 今天我温习了该专栏里一篇叫《幻读是什么,幻读有什么问题?》的文章。 关键词总结:幻读是什么?、幻读有什么问题?(语义问题、一致性问题)、如何解决幻读?(间隙锁、next-key lock、Supremum、间隙锁生效场景)。   所学总结:   幻读是

[每日一题] 01.27 - 斐波那契数列

文章目录 打分斐波那契数列 打分 n = int(input())lis = list(map(int,input().split()))a = sum(lis) - min(lis) - max(lis)print(round(a / (n - 2),2)) 斐波那契数列 n = int(input())res = []for i in range(n