64 条题解
-
83
AC代码
难度:简单,代码和思路在下面,仅供参考~😄
Difficulty:easy,code and ideas are here,for reference only~😄
------>>>目录<<<------
- 思路
- AC代码
- 彩蛋
1.思路
这个......这不题目明摆着嘛
老师:请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
我就直接复制粘帖了吧~
对于一个递归函数w(a,b,c)
- 如果a≤0 或b≤0 或c≤0 就返回值1。
- 如果 a>10 或 b>10 或 c>10 就返回 w(10,10,10)
- 如果 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)**
注意:例如 w(30,−1**,0)** 又满足条件 1 又满足条件 2,请按照最上面的条件来算,答案为 1。
2.AC代码
#include <iostream> using namespace std; long long w(long long a,long long b,long long c) { if(a <= 0 || b <= 0 || c <= 0) { return 1; } else if(a > 10 || b > 10 || c > 10) { return w(10,10,10); } else if(a < b && b < c) { return w(a,b,c - 1) + w(a,b - 1,c - 1) - w(a,b - 1,c); } else { return w(a - 1,b,c) + w(a - 1,b - 1,c)+w(a - 1,b,c - 1)-w(a - 1,b - 1,c - 1); } } int main() { long long a,b,c; cin >> a >> b >> c; cout << "w(" << a << "," << b << "," << c << ")=" << w(a,b,c) << endl; return 0; }
3.彩蛋
进入压力赛(检查题解) 有别于以往的漫不经心 今天的hetao704482 展现出从未有过的认真努力 他能否做到速度与品质的完美统一呢
-
你自己写的吗?
-
抄了一点。
-
抄谁的?
-
我去除了大部分的答案,
-
但是我保留了一部分。
-
我觉得保留一部分答案,
-
才能知道你做的好不好。
-
你是有意把他保留的吗?
-
是发送的过程中,我留下了一部分。
-
是故意的还是不小心的的?
-
是故意的。
(看题解检查)
(怒目圆睁,然后......)
(不明声音......)
编码不易😕
点赞走起😝
记得点赞再抱走哦~❤️
The encoding is not easy😕
you can support me😝
remember to praise and refer to it~❤️
-
53
题解 【本版权属于 hetao3449355 🚫一旦发现抄袭者,直接向管理员请求把你们拉黑,感谢您的配合】
(づ ̄3 ̄)づ╭❤️~😘
下面是代码👇
#include <bits/stdc++.h> using namespace std; long long w(long long a, long long b, long long c) { if ((a <= 0) || (b <= 0) || (c <= 0)) { return 1; } else if ((a > 10) || (b > 10) || (c > 10)) { return w(10, 10, 10); } else if ((a < b) && (b < c)) { return w(a, b, c - 1) + w(a, b - 1, c - 1) - w(a, b - 1, c); } return w(a - 1, b, c) + w(a - 1, b - 1, c) + w(a - 1, b, c - 1) - w(a - 1, b - 1, c - 1); } int main() { long long a, b, c; cin >> a >> b >> c; cout << "w(" << a << "," << b << "," << c << ")=" << w(a, b, c); return 0; }
如果有想抄本大侠的,点赞
👍后免费复制👆
好了,彩蛋时间🎉️
卧春 【宋】陆游 暗梅幽闻花, 卧枝伤恨底。 遥闻卧似水, 易透达春绿。 岸似绿, 岸似透绿, 岸似透黛绿。 一名小学生在老师听写古诗时这样写道 我蠢 【宋】陆游 俺没有文化, 我智商很低。 要问我是谁, 一头大蠢驴。 俺是驴, 俺是头驴, 俺是头呆驴。
你别笑啊哈哈哈哈哈哈哈哈😄
好了,通过2小时的“艰苦奋战”,终于做完了,编辑不易,请大家用赞的方式鼓励一下我吧! 好了,我们今天先到这里,下一次再见!886(拜拜喽)!👋
-
5
L2每课一题解(第一课 第三题)!!!
简单,还说啥挑战题~~~
不过对于一些人来说,此题十分难,有1245个WA,有1024个0分,所以,我来发题解啦!!!
递归思想完成,稍微比前两题难。
按照题意,一个个套就好了。
数据有点大,要开long long,时间足够了。
AC Code(求点赞)
#include<iostream> using namespace std; long long n,m,o; long long w(long long a,long long b,long long c) //"十年OI一场空,不开long long见祖宗"。 { if(a<=0||b<=0||c<=0) { return 1; } else if(a>10||b>10||c>10) { return w(10,10,10); } else if(a<b && b<c) { return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); } return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);//公式 } int main() { cin>>n>>m>>o; cout<<"w("<<n<<","<<m<<","<<o<<")="<< w(n,m,o);//格式注意! }
-
3
正确代码~ 如果也用c++14(O2)的家人们建议用"long",不然会报错~
#include <bits/stdc++.h>//hetao2193769 using namespace std; long w(long a,long b,long c) { if (a<=0 || b<=0 || c<=0) return 1; else if (a>10 || b>10 || c>10) return w(10,10,10); else if (a<b && b<c) return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); else return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); } int main() { long a,b,c; cin>>a>>b>>c; cout<<"w"<<"("<<a<<","<<b<<","<<c<<")"<<"="<<w(a,b,c); return 0; }
都看到这儿了 给小编点个赞在走吧~
-
2
#include <bits/stdc++.h>//msh using namespace std; long long w(long long a,long long b,long long c) { if(a <= 0 || b <= 0 || c <= 0) { return 1; } else if(a > 10 || b > 10 || c > 10) { return w(10,10,10); } else if(a < b && b < c) { return w(a,b,c - 1) + w(a,b - 1,c - 1) - w(a,b - 1,c); } else { return w(a - 1,b,c) + w(a - 1,b - 1,c)+w(a - 1,b,c - 1)-w(a - 1,b - 1,c - 1); } } int main() { long long a,b,c; cin >> a >> b >> c; cout << "w(" << a << "," << b << "," << c << ")=" << w(a,b,c) << endl; return 0; } //先赞后看养成好习惯
-
2
朕今天乃遍览众题解,发现众爱卿所言甚是,但过程实乃繁琐也,于是,朕乃披星戴月,日夜奋斗,终把代码压缩至两行,诚乃行数最短也,代码如下:
#include<bits/stdc++.h> using namespace std;long long w(long long a,long long b,long long c){if(a<=0||b<=0||c<=0){return 1;}else if(a>10||b>10||c>10){return w(10,10,10);}else if(a<b&&b<c){return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);}else{return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);}}int main(){long long n,m,x;cin>>n>>m>>x;cout<<"w("<<n<<","<<m<<","<<x<<")="<<w(n,m,x);}
-
2
题干描述的十分清楚了,所以咱们直接上核心代码,数据类型要用long long。
long long w(long long a,long long b,long long c) { if (a<=0 || b<=0 || c<=0) return 1; else if(a>10 || b>10 || c>10) return w(10,10,10); else if (a<b && b<c) return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); else return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c)-w(a-1,b-1,c-1); }
代码就这么简单,但输出会有点麻烦,有些同学会直接:
cout << "w(" << a << "," << b << "," << c << ")=" << w(a,b,c) << endl;
其实大可不必,只需要用printf就可以了,代码如下(注意printf的使用需要导入cstdio库):
printf("w(%l,%l,%l)=%l",a,b,c,w(a,b,c))
这么做是不是简单多了?写起来也比那一大嘟噜好看、好理解。“%l”是占位符,各种数据类型的占位符如下:
-
2
本次题解已送达~(^_^)~
#include<bits/stdc++.h> using namespace std; long long a, b, c; int w(int a, int b, int c) { if (a <= 0 || b <= 0 || c <= 0) return 1; else if (a > 10 || b > 10 || c > 10) return w(10,10,10); else if (a < b && b < c) return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); else return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); } int main() { cin >> a >> b >> c; cout << "w(" << a << "," << b << "," << c << ")=" << w(a, b, c); return 0; }
-
1
这个这么简单怎么7级啊
本题唯一的难点就是太难写了,但时间复杂度挺简单的,见这个表格
第一题 第二题 第三题 题目/数据 1分钟 2分钟 7分钟 我的用时 O(3^n) O(2^n) O(1^3) 时间复杂度 12 14 代码行数 搬运过来得了 #include <iostream> using namespace std; int w(int a,int b,int c){ if(a<=0||b<=0||c<=0) return 1; else if(a>10||b>10||c>10) return w(10,10,10); else if(a<b&&b<c) return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); else return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); } int main(){ long a,b,c; cin>>a>>b>>c; cout<<"w("<<a<<','<<b<<','<<c<<")="<<w(a,b,c); return 0; }
-
1
挑战:开始!
🆗,我来啦! 这一个挑战题看起来很难,稍微理解一下就行~ 《《《目录》》》 思路~ 代码~ 彩蛋~
思路
这就不用说什么了吧,普通看题就行,照着题就编写,理解一下的话还挺简单。就是不用怕代码编写的差不多拉黑,这次代码我看了下,答案都差不多,只是千万还是不要copy~
代码
#include <iostream> using namespace std; long long a, b, c; long long w(long long a,long long b,long long c) { if(a <= 0 || b <= 0 || c <= 0) { return 1; } else if(a > 10 || b > 10 || c > 10) { return w(10,10,10); } else if(a < b && b < c) { return w(a,b,c - 1) + w(a,b - 1,c - 1) - w(a,b - 1,c); } else { return w(a - 1,b,c) + w(a - 1,b - 1,c)+w(a - 1,b,c - 1)-w(a - 1,b - 1,c - 1); } } int main() { cin >> a >> b >> c; cout << "w(" << a << "," << b << "," << c << ")=" << w(a,b,c) << endl; }
彩蛋
谢谢大家的观看,点个赞赞领取本期笑话吧! “一个顾客对老板抱怨:’你们家生发剂喷得我头发越来越少!‘老板瞪大了眼睛,一本正经的对他说:’当然,要让头发掉一些,才能给新的头发腾位置啊!‘”
满三赞,下次还发!
-
1
#include <iostream> #include <bits/stdc++.h> #include <stdio.h> #include <iomanip> using namespace std; long long w(long long a,long long b,long long c) { if(a <= 0 || b <= 0 || c <= 0) { return 1; } else if(a > 10 || b > 10 || c > 10) { return w(10,10,10); } else if(a < b && b < c) { return w(a,b,c - 1) + w(a,b - 1,c - 1) - w(a,b - 1,c); } else { return w(a - 1,b,c) + w(a - 1,b - 1,c)+w(a - 1,b,c - 1)-w(a - 1,b - 1,c - 1); } } int main() { long long a,b,c; cin >> a >> b >> c; cout << "w(" << a << "," << b << "," << c << ")=" << w(a,b,c) << endl; return 0; }
-
1
#include <bits/stdc++.h> using namespace std; long long d,e,f,ans;//注意2的63次方超1亿要全用long long。 long long w(long long a,long long b,long long c){ //使用多分支else if,避免两种重复,先判小的。 if(a<=0||b<=0||c<=0)return 1;//第一种(边界)。 else if(a>10||b>10||c>10)return w(10,10,10);//第二种(难度不大) else if(a<b&&b<c)return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);//第三种(直接复制公式,?改成减号) else return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1);//第四种 (直接复制公式,?改成减号) } int main(){ cin>>d>>e>>f; ans=w(d,e,f); cout<<"w("<<d<<","<<e<<","<<f<<")="<<ans;//这里要把公式拆开,小心,要运行几次判断。 }
-
1
l```一定要开long long! 十年oi一场空,不开long long见祖宗 #include <bits/stdc++.h> using namespace std; int w(long long a,long long b,long long c) { if (a<=0 || b<=0 || c<=0) return 1; if (a>10 || b>10 || c>10) return w(10,10,10); return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); } int main() { long long a,b,c,d; cin>>a>>b>>c; d=w(a,b,c); cout<<"w("<<a<<","<<b<<","<<c<<")="<<d; return 0; }
-
1
先给出代码:
int w(int a,int b,int c) { if(a<=0 || b<=0 || c<=0)return 1; if(a>10 || b>10 || c>10)return w(10,10,10); if(a<b && b<c)return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); }
这里只给出核心代码!!!不要复制!!!!!!!
思路:
其实这就是一个简单的按照题目意思顺序“照抄”而已。
注意:要开long long!
注意输出!
-
1
P1003 【挑战题】Function
题目描述
对于一个递归函数 w(a,b,c)
-
a <= 0 || b <= 0 || c <= 0
返回值1。
-
a > 10 || b > 10 || c > 10
-
返回 (10,10,10)w(10,10,10)
-
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)**
注意:例如 w(30,−1**,0)** 又满足条件 1 又满足条件 2,请按照最上面的条件来算,答案为 1。
和上一题一样,没啥说的,列几个易错点
1.long long !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
2.想直接复制粘贴题目描述?注意-号是中文,要改为英文
3.输出格式
代码:
#include <iostream>//hetao3097453 using namespace std; long long w(long long a,long long b,long long c) { if(a <= 0 || b <= 0 || c <= 0) { return 1; } else if(a > 10 || b > 10 || c > 10) { return w(10,10,10); } else if(a < b && b < c) { return w(a,b,c - 1) + w(a,b - 1,c - 1) - w(a,b - 1,c); } else { return w(a - 1,b,c) + w(a - 1,b - 1,c)+w(a - 1,b,c - 1)-w(a - 1,b - 1,c - 1); } } int main() { long long a,b,c; cin >> a >> b >> c; cout << "w(" << a << "," << b << "," << c << ")=" << w(a,b,c) << endl; return 0; }
hetao3097453(bililili @ 一钩出站)
2023年3月3日
-
-
0
请大家注意!注意!!注意!!! 这个题的出题人非常《善良》,把一个样例输入超出了int类型的最大值,其他的地方还好,至少不用动太多脑,跟着题目就可以把题做好,但错误点要注意,别问我问啥只拿90分,要用long long! 要用long long重要的事说三遍 其他应该没啥问题
#include <bits/stdc++.h> using namespace std; long long f(long long x, long long y, long long z) { if (x <= 0 || y <= 0 || z <= 0) { return 1; } if (x > 10 || y > 10 || z > 10) { return f(10, 10, 10); } if (x < y && y < z) { return f(x, y, z-1) + f(x, y-1, z-1) - f(x, y-1, z); } return f(x-1, y, z) + f(x-1, y-1, z) + f(x-1, y, z-1) - f(x-1, y-1, z-1); } int main() { long long n,m, o; cin >> n>>m >> o; cout << "w(" << n << "," << m << "," << o << ")=" << f(m, n, o); return 0; }
-
0
#include <iostream> using namespace std; long long a,b,c; long long w(long long x,long long y,long long z) { if (x<=0 || y<=0 || z<=0) { return 1; } else if(x>10 || y>10 || z>10) { return w(10,10,10); } else if(x<y && y<z) { return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); } else { return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); } } int main() { cin>>a>>b>>c; cout<<"w("<<a<<","<<b<<","<<c<<")="<<w(a,b,c); return 0; }
-
0
#include <iostream> using namespace std; long long a,b,c; long long w(long long x,long long y,long long z) { if (x<=0 || y<=0 || z<=0) { return 1; } else if(x>10 || y>10 || z>10) { return w(10,10,10); } else if(x<y && y<z) { return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); } else { return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); } } int main() { cin>>a>>b>>c; cout<<"w("<<a<<","<<b<<","<<c<<")="<<w(a,b,c); return 0; }
-
0
这道题好像还好吧,只要把控好取值范围就行,别被坑
#include <bits/stdc++.h> using namespace std; long long w(long long a,long long b,long long c) { if (a<=0 || b<=0 || c<=0) { return 1; } else if(a>10 || b>10 || c>10) { return w(10,10,10); } else if(a<b && b<c) { return w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); } else { return w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1); } } int main() { long long a,b,c; cin>>a>>b>>c; cout<<"w("<<a<<","<<b<<","<<c<<")="<< w(a,b,c); return 0; }
-
0
上代码
#include <iostream> using namespace std; long long w(long long a,long long b,long long c) { if(a <= 0 || b <= 0 || c <= 0)//如果a,b,c至少有1个小于等于0 { return 1;//返回1 } else if(a > 10 || b > 10 || c > 10)//如果a,b,c至少有1个大于10 { return w(10,10,10);//递归调用w(10,10,10) } else if(a < b && b < c)//如果a大于b大于c { return w(a,b,c - 1) + w(a,b - 1,c - 1) - w(a,b - 1,c);//则将w(a,b,c-1)和w(a,b - 1,c - 1)的和减w(a,b - 1,c) } else//其他情况下 { return w(a - 1,b,c) + w(a - 1,b - 1,c)+w(a - 1,b,c - 1)-w(a - 1,b - 1,c - 1);//则将w(a-1,b,c)和w(a - 1,b,c - 1)的和减w(a - 1,b - 1,c - 1) } } int main() { long long a,b,c; cin >> a >> b >> c; cout << "w(" << a << "," << b << "," << c << ")=" << w(a,b,c) << endl; return 0; }
制作不易,点赞更有意义(ToT)
信息
- ID
- 7
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 9573
- 已通过
- 2181
- 上传者