网站加速器免费永久传统企业如何做好网络推广
网站加速器免费永久,传统企业如何做好网络推广,福建住房与城乡建设厅网站,网站建设客户分析调查问卷133 .FJ的字符串
题目描述
FJ在沙盘上写了这样一些字符串#xff1a;A1 “A”A2 “ABA”A3 “ABACABA”A4 “ABACABADABACABA”… …你能找出其中的规律并写所有的数列AN吗#xff1f;
代码
#include iostreamusing namespace std;// 深度优先搜索/递归函数
void…133 .FJ的字符串题目描述FJ在沙盘上写了这样一些字符串A1 “A”A2 “ABA”A3 “ABACABA”A4 “ABACABADABACABA”… …你能找出其中的规律并写所有的数列AN吗代码#includeiostreamusingnamespacestd;// 深度优先搜索/递归函数voiddfs(intn){// 递归边界当 n1 时直接输出 Aif(n1){coutA;return;}// 1. 输出左半部分 A(n-1)dfs(n-1);// 2. 输出中间的第 n 个字母// A 的 ASCII 码加上 n-1 即为对应的字母cout(char)(An-1);// 3. 输出右半部分 A(n-1)dfs(n-1);}intmain(){intn;while(cinn){dfs(n);cout\n;// 题目要求以一个换行符结束}return0;}总结递归边界当N1N1N1时直接输出A并返回。递归过程对于大于 1 的NNN先递归调用自身输出左半部分的A(n-1)接着输出中间的字符最后再递归调用自身输出右半部分的A(n-1)。134.3000米排名预测3000米长跑时围观党们兴高采烈地预测着最后的排名。因为他们来自不同的班对所有运动员不一定都了解于是他们分别对自己了解的一些运动员的实力作出了评估即对部分运动员做了相对排名的预测并且告诉了可怜留守的班长。因为无聊于是他们就组团去打Dota去了。比赛结束后他们向班长询问最后的排名但班长不记得了只记得他们中哪些人的预测是正确的哪些人的预测是错误的。他们想知道比赛的排名可能是什么。代码#includeiostream#includevectorusingnamespacestd;intn,m;// adj[u][v] true 表示根据正确的预测u 必须排在 v 之前booladj[15][15];// 存储所有错误的预测序列vectorvectorintzero_preds;// 存储所有合法的最终排名结果vectorvectorintresults;boolused[15];vectorintcurrent_perm;// 验证当前的完整排名是否成功推翻了“错误”的预测boolcheck_zero(constvectorintperm,constvectorintpred){intpos[15];// 记录每个运动员在当前排名中的位置for(inti0;in;i){pos[perm[i]]i;}// 检查预测序列中是否出现了至少一次相对顺序颠倒 (逆序)for(size_t i0;ipred.size()-1;i){if(pos[pred[i]]pos[pred[i1]]){returntrue;// 发现了逆序说明该预测序列确实是错的符合 status 0 的要求}}// 如果没有发现任何逆序说明相对顺序完全符合这与 status 0 矛盾returnfalse;}voiddfs(){// 已经生成了一个长度为 n 的完整排列if(current_perm.size()n){boolvalidtrue;// 统一检查所有的 status 0 的预测for(constautopred:zero_preds){if(!check_zero(current_perm,pred)){validfalse;break;}}// 如果全部符合要求加入答案if(valid){results.push_back(current_perm);}return;}// 按 0 ~ n-1 字典序尝试枚举下一个放入的人for(inti0;in;i){if(!used[i]){boolcan_placetrue;// 剪枝检查是否有必须排在 i 前面的人还没有被放入for(intj0;jn;j){if(adj[j][i]!used[j]){can_placefalse;break;}}// 满足依赖条件可以放入if(can_place){used[i]true;current_perm.push_back(i);dfs();// 递归搜索下一层// 回溯清理状态current_perm.pop_back();used[i]false;}}}}intmain(){if(!(cinnm))return0;for(inti0;im;i){intc;cinc;vectorintp(c);for(intj0;jc;j){cinp[j];}intstatus;cinstatus;if(status1){// 如果预测正确在相邻项之间建立前置依赖有向边for(intj0;jc-1;j){adj[p[j]][p[j1]]true;}}else{// 如果预测错误暂时保存等排好序后再检验zero_preds.push_back(p);}}// 从空排列开始爆搜dfs();// 按题目要求的格式输出先输出个数再按字典序输出所有方案coutresults.size()\n;for(constautoperm:results){for(intx:perm){coutx ;// 题目明确要求每个数字后都有一个空格行尾也有}cout\n;}return0;}总结构造剪枝条件正确的预测序列构成了严格的前后位置依赖关系。在 DFS 按字典序枚举每位运动员时利用这种依赖关系例如规定uuu必须排在vvv之前进行提前剪枝。如果前置运动员还没入列当前运动员就不能排入从而大幅缩小搜索空间。延迟验证错误的预测意味着该序列在最终排名中不能完全保持相对顺序即至少发生一次逆序。可以在搜索阶段先将这些序列存储起来等 DFS 完整排好nnn个人的顺序后再去统一检验。如果生成的完整排名没有打破这些“错误预测”的相对顺序则说明该排名不合法直接丢弃。135.芯片测试题目描述有n2≤n≤20块芯片有好有坏已知好芯片比坏芯片多。每个芯片都能用来测试其他芯片。用好芯片测试其他芯片时能正确给出被测试芯片是好还是坏。而用坏芯片测试其他芯片时会随机给出好或是坏的测试结果即此结果与被测试芯片实际的好坏无关。给出所有芯片的测试结果问哪些芯片是好芯片。代码#includeiostream#includevectorusingnamespacestd;intmain(){// 优化输入输出速度ios_base::sync_with_stdio(false);cin.tie(NULL);intn;if(!(cinn))return0;// 存储测试结果的二维矩阵vectorvectorintmatrix(n,vectorint(n));for(inti0;in;i){for(intj0;jn;j){cinmatrix[i][j];}}// 遍历每一列判断每一块芯片for(intj0;jn;j){intones_count0;// 统计第 j 列中 1 的个数for(inti0;in;i){if(matrix[i][j]1){ones_count;}}// 如果 1 的评价数过半说明是好芯片if(ones_countn/2){// 直接输出芯片编号和空格完美契合标准答案的 32 (空格)coutj1 ;}}// 程序结束不要输出 endl 或 \n避免产生 10 (换行符)return0;}总结答案末尾没换行我给加上了…如果第j块芯片是好芯片所有的好芯片在测试它时都会诚实地给出1好。因为好芯片的数量严格大于总数的一半即n/2 n/2n/2所以第j列中1的数量至少会大于n/2n/2n/2。如果第j块芯片是坏芯片那么所有的好芯片在测试它时都会诚实地给出0坏。既然好芯片占多数那么第j列中0的数量一定大于n/2n/2n/2。换句话说第j列中1的数量一定小于或等于n/2n/2n/2即使所有的坏芯片都说它是好芯片1的数量也不可能超过坏芯片的总数。翻译I. 引言计算机硬件是参与计算机运行的设备由可以物理操作触摸的组件构成。这些组件的功能通常分为三大类输入、输出和存储。这些类别中的组件通过称为总线的导线或电路连接到微处理器具体来说就是计算机的中央处理器CPU即提供计算能力和控制计算机的电子电路。另一方面软件是计算机用来操作数据的指令集合例如文字处理程序或视频游戏。这些程序通常通过计算机的硬件进行存储并在硬件与CPU之间来回传输。软件还控制着硬件的使用方式例如如何从存储设备中检索信息。输入和输出硬件之间的交互由称为基本输入/输出系统BIOS的软件控制。尽管在技术上微处理器仍被认为是硬件但它们的部分功能也与计算机软件相关联。由于微处理器兼具硬件和软件方面的特性因此它们通常被称为固件。