64 条题解

  • 83
    @ 2023-3-4 16:51:33

    AC代码

    难度:简单,代码和思路在下面,仅供参考~😄

    Difficulty:easy,code and ideas are here,for reference only~😄

    ------>>>目录<<<------

    • 思路
    • AC代码
    • 彩蛋

    1.思路

    这个......这不题目明摆着嘛

    老师:请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。

    我就直接复制粘帖了吧~

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

    • 如果a0b0c0 就返回值1
    • 如果 a>10b>10c>10 就返回 w(10,10,10)
    • 如果 a<b 并且 b<c 就返回w(a,b,c1)+w(a,b1**,c1)w**(a,b1,c)。
    • 其它的情况就返回 w(a1,b,c)+w(a1**,b1,c)+w(a1**,b,c1)w**(a1,b1,c1)**

    注意:例如 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
    @ 2023-8-3 21:53:31

    题解 【本版权属于 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(拜拜喽)!👋

    • @ 2024-4-12 19:42:47

      给个建议:

      三个 `之后可以加上cpp或c++或python 最后三个点后 还可以加</sp_an> 中间的_不要(如果直接写显示不出来) 结果:

      #include<bits/stdc++.h>
      using namespace std;
      int main(){
      
          return 0;
      
      </span>
  • 5
    @ 2023-10-5 21:08:23

    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
      @ 2024-4-15 19:37:03

      正确代码~ 如果也用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
        @ 2024-4-13 15:18:25

        #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
          @ 2024-4-12 23:36:10

          朕今天乃遍览众题解,发现众爱卿所言甚是,但过程实乃繁琐也,于是,朕乃披星戴月,日夜奋斗,终把代码压缩至两行,诚乃行数最短也,代码如下:

          #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
            @ 2024-2-25 12:39:14

            题干描述的十分清楚了,所以咱们直接上核心代码,数据类型要用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”是占位符,各种数据类型的占位符如下: image

            • 2
              @ 2023-12-16 21:15:53

              本次题解已送达~(^_^)~

              #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
                @ 2024-6-10 19:37:54

                这个这么简单怎么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
                  @ 2024-5-18 18:46:28

                  挑战:开始!

                  🆗,我来啦! 这一个挑战题看起来很难,稍微理解一下就行~ 《《《目录》》》 思路~ 代码~ 彩蛋~

                  思路

                  这就不用说什么了吧,普通看题就行,照着题就编写,理解一下的话还挺简单。就是不用怕代码编写的差不多拉黑,这次代码我看了下,答案都差不多,只是千万还是不要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
                    @ 2024-1-6 16:51:13
                    #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;
                    }
                    
                    • @ 2024-4-13 22:42:07

                      建议把头文件部分改成 #include <bits/stdc++.h>

                    • @ 2024-4-13 22:43:04

                      因为bits/stdc++.h包含其他的头文件

                  • 1
                    @ 2023-10-15 14:56:53
                    #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
                      @ 2023-8-25 10:17:12

                      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
                      @ 2023-5-13 12:04:24

                      先给出代码:

                      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);
                      }
                      

                      Copy

                      这里只给出核心代码!!!不要复制!!!!!!!

                      思路:

                      其实这就是一个简单的按照题目意思顺序“照抄”而已。

                      注意:要开long long!

                      注意输出!

                    • 1
                      @ 2023-3-3 22:00:14

                      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,c1)+w(a,b1**,c1)w**(a,b1,c)。

                      • 其它的情况就返回 w(a1,b,c)+w(a1**,b1,c)+w(a1**,b,c1)w**(a1,b1,c1)**

                      注意:例如 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
                      @ 2024-4-13 22:49:33

                      请大家注意!注意!!注意!!! 这个题的出题人非常《善良》,把一个样例输入超出了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
                        @ 2024-4-13 21:36:41
                        #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
                          @ 2024-4-13 21:36:10
                          #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
                            @ 2024-4-11 21:10:35

                            这道题好像还好吧,只要把控好取值范围就行,别被坑

                            #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
                              @ 2024-3-27 12:56:48

                              上代码

                              #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
                              上传者