//最近我闲的蛋疼; //于是,c++三级考试基本课堂1就诞生了!送给没钱买课程的人!(只要你看得懂)
#include <bits/stdc++.h>
#include<cstdlib>
#include<windows.h>
#include<ctime>
using namespace std;
int main(){
Sleep(1000);
srand(time(0));
system("color 90");
Sleep(100);
system("color 45");
Sleep(100);
system("color 50");
Sleep(100);
system("color 55");
Sleep(100);
system("color 60");
Sleep(100);
system("color 65");
Sleep(100);
system("color 35");
Sleep(100);
system("color 75");
Sleep(100);
system("color 90");
Sleep(100);
system("color 40");
Sleep(100);
system("color 30");
Sleep(100);
system("color 80");
Sleep(100);
system("color 70");
Sleep(100);
system("color 37");
string a,b,c,d,e,f;
cout<<"欢迎大家来到三级考试课堂!(第一节)"<<endl;
cout<<"先给大家说一说三级标准:"<<endl;
cout<<"1.掌握算法以及算法性能、算法效率概念;"<<endl;
cout<<"2.掌握基本算法中枚举的概念;"<<endl;
cout<<"3.掌握基本算法中递归的概念;"<<endl;
cout<<"4.掌握自调用函数的应用,实现基本算法中的递归算法;"<<endl;
cout<<"5.掌握基本算法中有递归变递推的方法。"<<endl;
cout<<"能够使用上述方法编写指定功能的正确完整的程序。"<<endl;
cout<<"要继续学习就写出“算法基础知识”哟!"<<endl;
cin>>c;
if(c!="算法基础知识")
{
system("color 37");
cout<<"本节课上完了,下节课再见!!";
return 0;
}
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<"第一讲:算法基础知识:"<<endl;
cout<<"算法(Algorithm)是指解题方案的准确而完整的描述,"<<endl;
cout<<"是一系列解决问题的清晰指令,\n算法代表着用系统的方法描述解决问题的策略机制。\n";
cout<<"也就是说,\n能够对一定规范的输入,在有限时间内获得所要求的输出。\n";
cout<<"如果一个算法有缺陷,或不适合于某个问题,\n执行这个算法将不会解决这个问题。\n";
cout<<"不同的算法可能用不同的时间、空间或效率来完成同样的任务。\n";
cout<<"一个算法的优劣可以用空间复杂度与时间复杂度来衡量。\n";
cout<<"解释:\n";
cout<<"时间复杂度:\n";
cout<<"算法的时间复杂度是指执行算法所需要的计算工作量;\n";
cout<<"空间复杂度:\n";
cout<<"算法的空间复杂度是指算法需要消耗的内存空间。\n";
cout<<"第一讲完毕。\n";
cout<<"如要继续,请输入“枚举算法”哟!";
cout<<endl;
cout<<endl;
cin>>a;
if(a=="枚举算法")
{
system("color 37");
cout<<endl;
cout<<endl;
cout<<"第二讲:枚举算法:\n"<<endl;
cout<<"枚举算法是我们在日常中使用到的最多的一个算法,它的核心思想就是:\n";
cout<<"枚举所有可能。\n";
cout<<endl;
cout<<"枚举法的本质就是从所有候选答案中去搜索正确的解,使用该算法需要满足两个条件\n";
cout<<endl;
cout<<"(1) 可预先确定候选答案的数量;";
cout<<"(2) 候选答案的范围在求解之前必须有一个确定的集合。\n";
cout<<endl;
cout<<endl;
cout<<"枚举算法格式以及优缺点:\n";
cout<<"for(int i=1;i<=n;i++)//列举所有可能性\n";
cout<<"...\n";
cout<<"if(满足条件)\n";
cout<<" //记录答案\n";
cout<<endl;
cout<<endl;
cout<<"优点:算法简单,在局部地方使用枚举法,效果十分好;\n";
cout<<"缺点:运算量过大,当问题的规模变大的时候,循环的阶数越大,执行速度越慢。\n";
cout<<endl;
cout<<endl;
cout<<"练习题1 两倍:\n";
cout<<"编程实现:找出一组数字中,一个数字是另外一个数字的两倍组合的数目。\n";
cout<<"输出格式:";
cout<<"第一行输入一个整数n(n<=1000)表示数列大小;\n";
cout<<"接下来的输入n个数字,每一个数字之间以空格隔开。\n";
cout<<"输出格式:\n";
cout<<"输出组合的个数。\n";
cout<<"样例:\n";
cout<<"8\n";
cout<<"1 2 3 4 5 6 7 8\n";
cout<<"样例输出:\n";
cout<<"4\n";
cout<<"请思考一下,这道题怎么解?\n";
cout<<"如果思考完了,请写出“答案”。\n";
cin>>b;
if(b=="答案")
{
system("color 37");
cout<<endl;
cout<<endl;
cout<<"直接枚举两个数字,如果出现第一个数字是第二个数字的2倍\n或者第二个数字是第一个数字的2倍\n";
cout<<"出现的次数就加一,要小心 2 1 和 1 2 这种组合,\n";
cout<<"只能算一种,第二个数要从第一个数字后面开始循环,从而避免这种问题\n";
cout<<"答案:\n";
cout<<endl;
cout<<endl;
cout<<"#include <iostream>\n";
cout<<"using namespace std;\n";
cout<<"int main()\n";
cout<<"{\n";
cout<<" int a[1010],n,sum=0;\n";
cout<<"cin>>n;\n";
cout<<"for (int i=1;i<=n;i++) cin>>a[i];\n";
cout<<endl;
cout<<"for (int i=1;i<=n;i++)\n";
cout<<" for (int j=i;j<=n;j++)\n";
cout<<" if (a[i]*2==a[j] || a[j]*2==a[i]) sum++;\n";
cout<<endl;
cout<<"cout<<sum;\n";
cout<<"return 0;\n";
cout<<"}\n";
cout<<endl;
cout<<endl;
cout<<"怎么样,简单吗?\n";
cout<<"如果看懂了,请写出:练习题2\n";
cin>>c;
if(c=="练习题2")
{
system("color 37");
cout<<endl;
cout<<endl;
cout<<"练习题2:鸡兔同笼\n";
cout<<"题目描述:\n";
cout<<"一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。\n已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。\n";
cout<<"输入格式:\n";
cout<<"一行,一个正整数a。\n";
cout<<"输出格式:\n";
cout<<"一行,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开。\n";
cout<<"如果没有满足要求的答案,则输出两个0,中间用一个空格分开。\n";
cout<<"样例:\n";
cout<<"输入样例:\n";
cout<<"20\n";
cout<<"输出样例:\n";
cout<<"5 10\n";
cout<<"请思考一下,这道题怎么解?\n";
cout<<"如果思考完了,请写出“答案”。\n";
cin>>d;
if(d=="答案")
{
system("color 37");
cout<<endl;
cout<<endl;
cout<<"思路是枚举所有鸡和兔的数目,然后计算腿的数目是否为n,\n是的话就输出,如果没有一种方案,就输出“0 0”。\n";
cout<<endl;
cout<<"#include <iostream>\n";
cout<<"using namespace std;\n";
cout<<"int main() {\n";
cout<<"int n;\n";
cout<<"cin>>n;\n";
cout<<"bool ok=0;\n";
cout<<"int t=0\n;";
cout<<"for(int i=0;i<=n/2;i++)\n";
cout<<" for(int j=0;j<=n/4;j++)\n";
cout<<" if (i*2+j*4==n){\n";
cout<<" if (ok==0){\n";
cout<<" cout<<i+j<<' ';\n";
cout<<" ok=1;\n";
cout<<" } else\n";
cout<<" t=i+j;\n";
cout<<" }\n";
cout<<"if(t!=0)\n";
cout<<" cout<<t;\n";
cout<<"else\n";
cout<<" cout<<“0 0”;\n";
cout<<"}\n";
cout<<"怎么样,简单吗?\n";
cout<<"如果看懂了,请写出:练习题3\n";
cin>>e;
if(e=="练习题3")
{
system("color 37");
cout<<endl;
cout<<endl;
cout<<"练习题3:完美立方数\n";
cout<<"形如a的立方=b的立方+c的立方+d的立方的等式被称为完美立方等式。\n列如12立方=6的立方+8的立方+10的立方。\n";
cout<<"编写一个程序,对任给的正整数N(N≦100),寻找所有的四元组(a,b,c,d),使得a的立方=b的立方+c的立方+d的立方,其中a,b,c,d大于1,小于等于N,且b<=c<=d。\n";
cout<<"输入格式:\n";
cout<<"一个正整数N(N≦100)。\n";
cout<<"输出格式:\n";
cout<<"每行输出一个完美立方。输出格式为:\n";
cout<<"Cube=a,Triple=(b,c,d)\n";
cout<<"其中a,b,c,d所在位置分别用实际求出四元组代入。\n";
cout<<"PS:请按照a的值,从小到大依次输出。当两个完美立方等式中a的值相同,则b值小的优先输出、仍相同则c值小的优先输出、在相同则d值小的先输出。\n";
cout<<"样例:\n";
cout<<"输入样例:\n";
cout<<"24\n";
cout<<"输出格式:\n";
cout<<"Cube=6,Triple=(3,4,5)\n";
cout<<"Cube=12,Triple=(6,8,10)\n";
cout<<"Cube=18,Triple=(2,12,16)\n";
cout<<"Cube=18,Triple=(9,12,15)\n";
cout<<"Cube=19,Triple=(3,10,18)\n";
cout<<"Cube=20,Triple=(7,14,17)\n";
cout<<"Cube=24,Triple=(12,16,20)\n";
cout<<"请思考一下,这道题怎么解?\n";
cout<<"如果思考完了,请写出“答案”。\n";
cin>>e;
if(e=="答案")
{
system("color 37");
cout<<endl;
cout<<endl;
cout<<"本体的思路为根据题目中的条件,枚举数字a、b、c和d的所有可能性,\n判断似乎否满足a的三次方等于b的三次方+c的三次方+d的三次方,\n注意输出时候的格式。\n";
cout<<endl;
cout<<endl;
cout<<"#include <iostream>\n";
cout<<"#include <cstdio>\n";
cout<<"using namespace std;\n";
cout<<"int main(){\n";
cout<<"int n;\n";
cout<<"cin>>n;\n";
cout<<"for (int a=2;a<=n;a++)\n";
cout<<"for (int b=2;b<=n;b++)\n";
cout<<"for (int c=b;c<=n;c++)\n";
cout<<"for (int d=c;d<=n;d++)\n";
cout<<"{\n";
cout<<" if (a*a*a==b*b*b+c*c*c+d*d*d)\n";
cout<<" printf(“Cube=%d,Triple=(%d,%d,%d)/n(/n的/正式写的时候要改变方向)”,a,b,c,d);\n";
cout<<"}\n";
cout<<"return 0;\n";
cout<<"}\n";
cout<<"怎么样,简单吗?\n";
cout<<"如果看懂了,请写出:结束\n";
cin>>f;
if(f=="结束")
{
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
system("color 20");
cout<<"各位同学们,三级考试内容的第一节已完毕。\n感谢你的观看,( ̄▽ ̄)/ \n再见!!\n";
}
}
}
}
}
}
}
cout<<endl;
cout<<endl;
return 0;
}
//本次程序更改了一下,带你最好的体验!
//感谢一下F
//作者:xzh
//请勿抄袭,谢谢!( ̄▽ ̄)"
共 8 条回复
四级才考DP,三级能难到哪去?
奥利给!(不过三级有这么简单吗)
c++三级考试基本课堂2&3将会在六一准时出品!
c++三级考试基本课堂2&3将会在六一准时出品!
c++三级考试基本课堂2&3将会在六一准时出品!
xu童鞋NB!!!
我只能说:“牛逼牛逼!”
很棒棒!