C++(阶段性练习)
学习目标模拟法的练习枚举法的练习计算机发展过程(三)第四代计算机(1971年-现在)采用大规模、超大规模集成电路,内存为半导体存储器,外存为磁盘或光盘。出现了数据库管理系统、网络管理系统和面向对象语言等先进软件技术,为计算机的应用提供了更广阔的平台和可能性。个人电脑开始普及,网络技术得到了迅速发展,计算机成为日常生活中不可或缺的一部分。什么是模拟法顾名思义,就是利用计算机模拟问题的求解过程,从而得到问题的解模拟法是解决问题的一种方法或模式,针对具体问题要设计具体的程序模拟是一种思想!具体问题具体分析!模拟法解题的步骤认真仔细的读题提取关键要素按需求编写程序 全面测试程序的正确性多练习、多整理细节、熟能生巧什么是枚举法枚举,也叫穷举。即按照一定顺序,不重复、不遗漏遍历所有可能的解,对每一个可能的解按题意进行验证,从而得到正确的解。虽然需要消耗大量的时间,但是简单,可以取得正确结果。也被称为暴力算法。常用于解决“是否存在”或“有多少种可能”等问题。循环是最简单的枚举方案枚举法解题的步骤1 确定枚举量、枚举范围2 用循环实现枚举3 在循环体中进行判断和筛选4 保证正确性的前提下进行适当优化植树方案公园准备在小山上种桃树、梨树、苹果树,为了美观,总共准备种n棵树(n=6且n一定是6的倍数),要求三种树都得有,且每种树的数量都得是偶数,桃树的数量不能比梨树的数量多,梨树的数量不能比苹果树的数量多。请问有这三种树的数量分别有哪些可能的组合方法,从少到多分别数出桃树、梨树、苹果数可能的数量组合,每行1个方案。【输入】一个整数n(n=6且是6的倍数)【输出】若干行的可能的组合方案,每行3个数,分别代表桃树、梨树、苹果树的可能的方案。【输入样例】18【输出样例】2 2 142 4 122 6 102 8 84 4 104 6 86 6 6枚举思路:for(枚举桃树×){for(枚举梨树y){计算苹果树数量zif(苹果树数量符合题目要求)输出}}#includebits/stdc++.husingnamespacestd;intmain(){intn,x,y,z;cinn;for(x=2;xn;x+=2)//枚举桃树for(y=x;yn;y+=2)//枚举梨树{z=n-x-y;//根据总数n,算苹果树的 数量if(z%2==0z=y)coutx" "y" "zendl;}return0;}神奇的幻方幻方是一种很神奇的N*N矩阵:它由数字1,2,3, …… ,*N构成,且每行、每列及两条对角线上的数字之和都相同。比如洛书上的数字排列就是一个3阶幻方。由1~9九个连续的自然数构成,且行、列、对角线之和都是15。当N为奇数时,我们可以通过以下方法构建一个幻方:首先将1写在第一行的中间。之后,按如下方式从小到大依次填写数字K(K=2,3, … ,N*N):若(K-1)在第一行但不在最后一列,则将K填在最后一行,(K-1)所在列的右一列;若(K-1)在最后一列但不在第一行,则将K填在第一列,(K-1)所在行的上一行;若(K-1)在第一行最后一列,则将K填在(K-1)的正下方;若(K-1)既不在第一行,也不在最后一列,如果(K-1)的右上方还未填数,则将K填在(K-1)的右上方,否则将K填在(K-1)的正下方。现给定奇数N,请按上述方法构造NN的幻方。【输入】一个奇数N,即幻方的大小,(0N = 40)。【输出】共N行,每行N个整数,即按上述方法构造出的NN的幻方,相邻两个整数之间用单空格隔开。【输入样例1】3【输出样例1】816357492#includebits/stdc++.husingnamespacestd;intmain(){inta[41][41]={0},n;intx,y;//用两个坐标进行模拟cinn;x=1;y=n/2+1;//指定第一个数的坐标(第一行中间)