算法基礎——模擬

目錄

1 多項式輸出

2.蛇形方陣

3.字符串的展開


模擬,顧名思義,就是題?讓你做什么你就做什么,考察的是將思路轉化成代碼的代碼能?。這類題?般較為簡單,屬于競賽??的簽到題(但是,萬事?絕對,也有可能會出現讓人非常難受的模擬題),但是在學習語法階段接觸的題,大多數都屬于模擬題。

1 多項式輸出

題?來源: 洛?

題?鏈接:P1067 [NOIP2009 普及組] 多項式輸出

難度系數: ★

[解法]

根據題意模擬+分類討論(分的越詳細,越不會出現bug):

僅需按照順序,考慮每?項的三件事情:符號 + 系數 + 次數。?

處理「符號」:

  1. 負數:直接輸出
  2. 正數:(1) 是第n項,不輸出+?(2)其余情況,直接輸出+

處理「系數」:

  • 先取絕對值:

? ? ? ? ? ? ? ? (1)不是1,直接輸出

? ? ? ? ? ? ? ? (2)是1

? ? ? ? ? ? ? ? ? ? ? ? 末項 - 需要輸出

? ? ? ? ? ? ? ? ? ? ? ? 不是末項 - 不需要輸出

處理「次數」:

  • 次數為?1 ,輸出 "x";
  • 次數為0?,什么也不輸出

  • 其他 ,輸出 "x^" + 對應的次數;

【參考代碼】

#include<iostream>
#include<cmath>
using namespace std;int main(){int n;cin >> n;//循環次數 for(int i = n;i >= 0;i--){int op;cin >> op;if(op == 0) continue;//出來系數為0的情況 //1.符號 if(op < 0) cout << "-";else{if(i != n) cout << "+";} //2.系數int a = abs(op);if(a != 1 || (a==1 && i== 0)) cout << a;//3.次數if(i == 1)cout << "x";else if(i == 0) ;else{cout << "x^" << i;} }return 0;
}

2.蛇形方陣

題?來源: 洛?

題?鏈接:P5731 【深基5.習6】蛇形?陣

難度系數: ★

[解法]

模擬填數的過程。(實現的方式有很多種)

在?個矩陣中按照?定規律填數的通用解法

  1. 定義方向向量

? ? ? ? ? ? ?比如本題?共四個方向,分別是右、下、左、上,對應: (0, 1)、(1, 0)、(0, -1)、(-1, 0)

? ? ? ? ? ?

? ? ? ? ? ? 遇到其他類型的題只需要更改方向向量即可;

?????2.根據規則結合方向向量填數

? ? ? ? ? ? (1) 朝?個方向?,?邊走?邊填數,直到越界;

? ? ? ? ? ? (2) 越界之后,結合定義的方向向量,求出下?輪應該?的方向以及應該到達的正確

????????????????????????位置;

? ? ? ? ? ? (3)重復上述過程,直到把所有的數填完為止;

【參考代碼】

#include<iostream>
using namespace std;const int N = 15;//定義方向向量 右,下, 左,上 
int dy[] = {1,0,-1,0};
int dx[] = {0,1,0,-1};int arr[N][N];int main(){int n;cin >> n;//模擬填數過程 int cet = 1; //當前位置要填的數 int x = 1,y = 1;//初始位置 int pos = 0;//當前的方向 while(cet <= n*n){arr[x][y] = cet;//計算下一個位置 int a = x + dx[pos];int b = y + dy[pos];//判斷是否越界 if(a < 1 || a > n || b < 1 || b > n || arr[a][b]){//更新出正確的該走的位置 pos = (pos + 1) % 4;a = x + dx[pos];b = y + dy[pos];}cet++;x = a;y = b;} for(int i = 1;i <= n;i++){for(int j = 1;j <= n;j++){printf("%3d",arr[i][j]);}printf("\n");}return 0;
}

3.字符串的展開

題?來源: 洛谷

題?鏈接: P1098 [NOIP2007 提?組] 字符串的展開

難度系數: ★

【解法】

純代碼題 - 考察代碼能力 :>

【參考代碼】

#include<iostream>
#include<algorithm>
using namespace std;int p1,p2,p3,n;
string s,ret;//判斷是否是數字字符 
bool isdig(char ch){return ch >= '0' && ch <= '9';;
}//判斷是否小寫字母 
bool islet(char ch){return ch >= 'a' && ch <= 'z';
}//展開 把(left,right)之間的字符展開 
void add(char l,char r){string t;//遍歷中間的字符for(char ch = l + 1;ch < r;ch++){char tmp = ch;//處理p1 if(p1 == 2 && islet(tmp)) tmp -= 32; //小寫變大寫 else if(p1 == 3) tmp = '*';//變成星號 //處理p2 for(int i = 1;i <= p2;i++){t += tmp;}}//處理p3 if(p3 == 2) reverse(t.begin(),t.end());ret += t; 
}
int main(){cin >> p1 >> p2 >> p3 >> s;n = s.size();for(int i = 0;i < n;i++){char ch = s[i];if(s[i] != '-' || i == 0 || i == n-1) ret += ch;else{char left = s[i-1], right = s[i+1];//判斷是否展開 if((isdig(left) && isdig(right) && left < right) || (islet(left) && islet(right) && left < right)){//展開add(left,right); }else{ret += ch; }}}cout << ret << endl;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899242.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899242.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899242.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PrimeTime生成.lib竟暗藏PG添加Bug

在primeTime里生成lib&#xff0c;如何能帶上相關的pg信息&#xff1f; 這是一位群友的發問&#xff0c;就這個問題總結了下可能的原因和解決步驟&#xff1a; 概念 PrimeTime是Synopsys的靜態時序分析工具&#xff0c;通常用于在設計的各個階段進行時序驗證。 1&#xff09…

yolo系列算法最新進展

YOLO&#xff08;You Only Look Once&#xff09;系列算法作為目標檢測領域的代表性模型&#xff0c;自2016年推出以來不斷迭代&#xff0c;在速度與精度之間尋求平衡。截至2024年&#xff0c;其最新進展主要集中在以下幾個方面&#xff1a; ?1. YOLOv8 的優化與擴展? ?官方…

動態規劃:路徑類dp

路徑類dp 1.矩陣的最小路徑和_牛客題霸_牛客網 #include<iostream> #include<cstring> using namespace std;const int N 510; int f[N][N]; int n, m;int main() {cin >> n >> m;memset(f, 0x3f3f3f, sizeof(f));f[0][1] 0;for (int i 1; i < …

性能測試理論基礎-性能指標及jmeter中的指標

1、什么是性能測試 通過一定的手段,在多并發下情況下,獲取被測系統的各項性能指標,驗證被測系統在高并發下的處理能力、響應能力,穩定性等,能否滿足預期。定位性能瓶頸,排查性能隱患,保障系統的質量,提升用戶體驗。 2、什么樣的系統需要做性能測試 用戶量大,頁面訪問…

Debian,Ubuntu,設置/etc/vim/vimrc.tiny解決:上下左右變成ABCD,backspace退格鍵失效的問題

Debian,Ubuntu,用設置/etc/vim/vimrc.tiny解決:上下左右變成ABCD,backspace退格鍵失效的問題 Debian,Ubuntu, 默認的vi 在編輯模式下的上下左右變成ABCD , 退格鍵也失效 解決辦法1, 卸載重裝vim sudo apt remove vim; sudo apt install -y vim解決辦法2: 修改 /etc/vim/vimr…

Redis 單機16個db,集群只有一個的基本知識

目錄 前言1. 基本知識2. 配置 前言 &#x1f91f; 找工作&#xff0c;來萬碼優才&#xff1a;&#x1f449; #小程序://萬碼優才/r6rqmzDaXpYkJZF 爬蟲神器&#xff0c;無代碼爬取&#xff0c;就來&#xff1a;bright.cn Java基本知識&#xff1a; java框架 零基礎從入門到精通…

藍橋杯C++基礎算法-多重背包(優化)

這段代碼實現了一個多重背包問題的動態規劃解法&#xff0c;并且使用了二進制拆分&#xff08;或稱二進制優化&#xff09;來優化物品的數量處理。這種方法可以顯著減少狀態轉移的次數&#xff0c;提高算法的效率。以下是代碼的詳細思路解析&#xff1a; 1. 問題背景 給定 n 個…

FALL靶機攻略

1.下載靶機&#xff0c;導入靶機 下載地址&#xff1a;https://download.vulnhub.com/digitalworld/FALL.7z 開啟靶機。 2. 靶機、kali設置NAT網卡模式 3. kali掃描NAT網卡段的主機 kali主機 nmap掃描&#xff1a;nmap 192.168.92.1/24 判斷出靶機ip是192.168.92.133。開啟…

notepad++代碼查看器分享

文章目錄 &#x1f4dd; Notepad 簡介&#x1f527; 主要特點打開.c文件示意高亮語法展示全局替換功能展示 &#x1f4dd; Notepad 簡介 Notepad 是一款 免費的開源文本編輯器和源代碼編輯器&#xff0c;運行在 Windows 系統上。 它是對 Windows 自帶“記事本”的增強版本&…

詳細介紹Spring MVC的執行流程是怎么樣的?

Spring MVC 是 Spring 框架的一部分&#xff0c;用于構建 Web 應用程序。它的執行流程如下&#xff1a; 前端控制器&#xff08;DispatcherServlet&#xff09;接收請求&#xff1a;用戶通過瀏覽器發送 HTTP 請求到服務器&#xff0c;請求首先被前端控制器 DispatcherServlet 接…

MySQL中的內連接與外連接詳解:基礎與進階應用

文章目錄 表的內連和外連&#xff08;重點&#xff09;內連接外連接左外連接右外連接 簡單回顧 表的內連和外連&#xff08;重點&#xff09; 表的連接分為內連和外連 內連接 內連接實際上就是利用where子句對兩種表形成的笛卡兒積進行篩選&#xff0c;我們前面學習的查詢都…

動態內存分配與內存對齊

在C語言及其他低級編程語言中,內存管理是一個至關重要的主題。動態內存分配和內存對齊是確保程序高效和穩定運行的關鍵因素。本文將深入探討動態內存分配的原理,內存對齊的概念,并解釋它們如何共同影響程序的性能和資源利用。 一、動態內存分配簡介 1.1 動態內存分配的概念…

Milvus×最新版DeepSeek v3:對標Claude,本地數據五分鐘寫網站

前言 就在昨晚&#xff0c;DeepSeek v3推出了新版本V3-0324&#xff0c;再次一夜爆火。 雖然官方表示“這只是一次小升級”“API接口和使用方式不變”&#xff0c;但經過Zilliz的第一時間實測&#xff0c;我們發現無論是邏輯能力&#xff0c;還是編程能力&#xff0c;相較原本的…

6.M-LAG專題

M-LAG 的作用及特點 能不能簡單的描述以下M-LAG的工作原理? 跨設備鏈路聚合&#xff0c;將兩臺物理設備在聚合層面虛擬成一臺設備來實現跨設備鏈路聚合&#xff0c;從而提供設備級冗余保護和流量負載分擔 M-LAG(跨設備鏈路聚合)是基于IEEEP802.1A協議的跨設備鏈路聚合技術。…

每日免費分享之精品wordpress主題系列~DAY16

主題介紹&#xff1a; 今日在網上尋找wordpress主題的時候逛到了大叔的網站&#xff0c;趕腳這個主題蠻不錯的&#xff0c;于是百度一下&#xff0c;果然&#xff0c;這個主題很受歡迎。作為主題下載站追夢者也不甘落后&#xff0c;馬上就發布出來了&#xff0c;希望對你們有用…

LeeCode 383. 贖金信

給你兩個字符串&#xff1a;ransomNote 和 magazine &#xff0c;判斷 ransomNote 能不能由 magazine 里面的字符構成。 如果可以&#xff0c;返回 true &#xff1b;否則返回 false 。 magazine 中的每個字符只能在 ransomNote 中使用一次。 示例 1&#xff1a; 輸入&#…

目標檢測20年(一)

今天看的文獻是《Object Detection in 20 Years: A Survey》&#xff0c;非常經典的一篇目標檢測文獻&#xff0c;希望通過這篇文章學習到目標檢測的基礎方法并提供一些創新思想。 論文鏈接&#xff1a;1905.05055 目錄 一、摘要 1.1 原文 1.2 翻譯 二、介紹 三、目標檢測…

分割 / 合并大文件的簡單 python 代碼

使用方法 分割: python fs.py -n <分割后的文件個數> <要分割的文件> 合并: python fs.py -m <分割文件1> <分割文件2> ... 示例 PS C:\Users\Administrator\Desktop> python fs.py 使用方法: 分割: python fs.py -n <分割后的文件個數> &…

IDEA 快捷鍵ctrl+shift+f 無法全局搜索內容的問題及解決辦法

本篇文章主要講解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列編輯器無法進行全局搜索內容問題的主要原因及解決辦法。 日期&#xff1a;2025年3月22日 作者&#xff1a;任聰聰 現象描述&#xff1a; 1.按下ctrlshiftf 輸入法轉為了繁體。 2.快捷鍵ctrlshiftr 可以全局檢…

樹狀數組【數據結構】

樹狀數組 簡介 1.應用 1.單點修改區間查詢 2.區間修改單點查詢(差分) 3.區間修改區間查詢(差分公式) 總而言之,就是動態維護前綴和。 2.樹狀結構圖 3.lowbit函數 我們知道&#xff0c;任何一個正整數都可以被表示成一個二進制數。如&#xff1a; ( 2 ) 10 ( 10 ) 2 (2)_{10…