可以做c 试题的网站,高端网站建设公司有哪些项目,网络营销导向企业网站建设的一般原则包括,做一个网站要什么样技术目录
构造
构造的基础概念#xff1a;
模拟
练习1#xff1a;扫雷
练习2#xff1a;灌溉 练习3#xff1a;回文日期 构造 构造的基础概念#xff1a; 构造算法是一种用于解决特定问题的算法设计方法。在C语言中#xff0c;构造算法通常涉及到创建一个函数或类来实…目录
构造
构造的基础概念
模拟
练习1扫雷
练习2灌溉 练习3回文日期 构造 构造的基础概念 构造算法是一种用于解决特定问题的算法设计方法。在C语言中构造算法通常涉及到创建一个函数或类来实现特定的功能。以下是一个用C语言详细介绍构造算法的示例 #include iostream
#include vector// 定义一个函数来实现构造算法
void constructAlgorithm(std::vectorint nums) {int n nums.size();// 在这里实现构造算法的具体逻辑for (int i 0; i n; i) {nums[i] i * i;}
}int main() {// 创建一个包含一定数量元素的向量std::vectorint nums {1, 2, 3, 4, 5};// 调用构造算法函数来处理向量中的元素constructAlgorithm(nums);// 输出处理后的向量元素for (int i 0; i nums.size(); i) {std::cout nums[i] ;}return 0;
}在上面的示例中我们定义了一个名为constructAlgorithm的函数来实现构造算法的逻辑。在main函数中我们创建了一个包含一定数量元素的向量并调用constructAlgorithm函数来处理向量中的元素。最后我们输出处理后的向量元素。 通过这种方式我们可以使用C语言来实现构造算法解决特定问题并实现所需的功能。 模拟 模拟算法是一种通过模拟真实世界情况来解决问题的方法。在C中可以通过编写代码来模拟算法的思路。 以下是一个简单的示例介绍如何用C代码实现一个简单的模拟算法 #include iostreamint main() {// 模拟一个简单的情况假设有5个人排队等待进入电影院int queue[5] {1, 2, 3, 4, 5};// 模拟每个人进入电影院的过程for (int i 0; i 5; i) {std::cout Person queue[i] enters the cinema. std::endl;}// 模拟电影播放结束人们陆续离开电影院for (int i 0; i 5; i) {std::cout Person queue[i] leaves the cinema. std::endl;}return 0;
}在这个示例中我们模拟了一个简单的场景5个人排队等待进入电影院然后陆续进入电影院观影最后陆续离开电影院。通过这个简单的例子展示了如何用C代码实现模拟算法的思路。在实际应用中可以根据具体问题的情况编写相应的模拟算法代码。 练习1扫雷 1.扫雷 - 蓝桥云课 (lanqiao.cn) 答案和思路 #includebits/stdc.h
using namespace std;
int n,m;
int arr[105][105],ans[105][105];
int main()
{// 输入n和m的值cinnm;// 输入矩阵arr的值for(int i0;in;i){for(int j0;jm;j){cinarr[i][j];}}// 计算每个位置周围的1的个数for(int i0;in;i){for(int j0;jm;j){if(arr[i][j]1){ans[i][j]9; // 如果当前位置为1则置为9continue;}for(int _imax(0,i-1);_imin(n,i1);_i){for(int _jmax(0,j-1);_jmin(m,j1);_j){if(arr[_i][_j]1) ans[i][j]; // 统计周围1的个数}}}}// 输出ans矩阵for(int i0;in;i){for(int j0;jm;j){coutans[i][j] ;}coutendl;}return 0;
} 练习2灌溉 1.灌溉 - 蓝桥云课 (lanqiao.cn) 思路和代码 思路定义两个数组用1记录初始水方块a根据题意跟新对应水方块用更新完的水方块b覆盖a再次迭代直到次数结束在规定范围内统计水方块个数。
#includebits/stdc.h
using namespace std;
int main()
{int n, m; // 定义矩阵的行数和列数cin n m; // 输入矩阵的行数和列数int t; // 定义初始时有多少个位置为1cin t; // 输入初始时有多少个位置为1int a[105][105], b[105][105]; // 定义两个矩阵a和b// 输入初始位置为1的坐标for (int i 1; i t; i){int x, y;cin x y;a[x][y] 1; // 将指定位置置为1}int k; // 定义迭代次数cin k; // 输入迭代次数while (k--){// 更新矩阵bfor (int i 1; i n; i){for (int j 1; j m; j){if (a[i][j]){b[i][j] b[i - 1][j] b[i][j - 1] b[i][j 1] b[i 1][j] 1;}}}// 更新矩阵afor (int i 1; i n; i){for (int j 1; j m; j){a[i][j] b[i][j];}}}// 统计最终有多少个位置为1int ans 0;for (int i 1; i n; i){for (int j 1; j m; j){if (a[i][j] 1) ans;}}// 输出最终结果cout ans endl;return 0;
} 特别注意数组从a[1][1]开始传入i0和j0的位置空出即使更新的时候溢出规定范围也没关系注意统计时的边界就行。 练习3回文日期 3.回文日期 - 蓝桥云课 (lanqiao.cn) 思路和代码 #includebits/stdc.h
using namespace std;// 判断是否为闰年
bool isleap(int y)
{return (y % 4 0 y % 100 ! 0) || (y % 400 0);
}// 检查日期是否合法
bool check(int year, int month, int day)
{if (month 12 || month 0) return false;if (month 2){if (isleap(year) day 29) return false;if (!isleap(year) day 28) return false;}if (day 31) return false;if (month 4 || month 6 || month 9 || month 11){if (day 30) return false;}return true;
}int main()
{int n;cin n;int a, b, c, d, e, f, g, h;int year, month, day;bool flag false;for (int i n 1; i 99999999; i){year i / 10000;month (i % 10000) / 100;day i % 100;a i % 10;b (i / 10) % 10;c (i / 100) % 10;d (i / 1000) % 10;e (i / 10000) % 10;f (i / 100000) % 10;g (i / 1000000) % 10;h (i / 10000000) % 10;if (a h b g c f d e flag false){if (check(year, month, day)){cout i endl;flag true;}}if (a h b g c f d e a c b d){if (check(year, month, day)){cout i endl;break;}}}return 0;
}