c++三级考试基本课堂1( ̄▽ ̄)"

xuzihang 2020-05-28 22:14:48 2020-06-01 14:12:18 0

//最近我闲的蛋疼; //于是,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
//请勿抄袭,谢谢!( ̄▽ ̄)"
{{ vote && vote.total.up }}

共 8 条回复

pikahuan 逗比

四级才考DP,三级能难到哪去?

chen_zhe 沙雕

奥利给!(不过三级有这么简单吗)

xuzihang

c++三级考试基本课堂2&3将会在六一准时出品!

xuzihang

c++三级考试基本课堂2&3将会在六一准时出品!

xuzihang

c++三级考试基本课堂2&3将会在六一准时出品!

chen_zhe 沙雕

xu童鞋NB!!!

Duke

我只能说:“牛逼牛逼!”

root 站长

很棒棒!