洛谷題單_搜索

P1219 [USACO1.5] 八皇后 Checker Challenge - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

#include <bits/stdc++.h>
using namespace std;
const int N=14;
int n,ans=0;
int a[N][N]={},vis[N][N]={};
vector<int>rcd(n+1);
void dfs(int dep){if(dep==n+1){if(ans<=2){for(int i=1;i<=n;i++)cout<<rcd[i]<<" \n"[i==n];}ans++;return ;}//此時該搜索第n+1行說明前n行已經排列完成了 for(int i=1;i<=n;i++){if(vis[dep][i])continue;//如果出現過就直接跳過rcd[dep]=i;for(int _i=1;_i<=n;_i++)vis[_i][i]++;//這一列都是0for(int _i=dep,_j=i;_i>=1&&_j>=1;--_i,--_j)vis[_i][_j]++;//左上for(int _i=dep,_j=i;_i>=1&&_j<=n;--_i,++_j)vis[_i][_j]++;//右上for(int _i=dep,_j=i;_i<=n&&_j<=n;++_i,++_j)vis[_i][_j]++;//右下for(int _i=dep,_j=i;_i<=n&&_j>=1;++_i,--_j)vis[_i][_j]++;//左下dfs(dep+1);//搜索下一行//回溯for(int _i=1;_i<=n;_i++)vis[_i][i]--;//這一列都是0for(int _i=dep,_j=i;_i>=1&&_j>=1;--_i,--_j)vis[_i][_j]--;//左上for(int _i=dep,_j=i;_i>=1&&_j<=n;--_i,++_j)vis[_i][_j]--;//右上for(int _i=dep,_j=i;_i<=n&&_j<=n;++_i,++_j)vis[_i][_j]--;//右下for(int _i=dep,_j=i;_i<=n&&_j>=1;++_i,--_j)vis[_i][_j]--;//左下}
}
int main(){cin>>n;dfs(1);//從第一行開始搜索cout<<ans;return 0;
}
#include <bits/stdc++.h>
using namespace std;
const int N=16;
int a[N];//表示第i行皇后放在a[i]列
int n,cnt;
// int vis[N][N];
vector<int>ans;
int nd=3;
bool check(int x){//輸入行,不與每一行的皇后成關系就行
//檢查x行 a[x]列的皇后是否可以放for(int i=1;i<x;i++){//遍歷之前的所有行if(a[i]==a[x]||a[i]-i==a[x]-x||a[x]+x==a[i]+i)return 0;}//主對角線行-列=行-列 副對角線上行+列=行+列
//若位于同一列 或位于同一主對角線上或者位于同一副對角線上就不行return 1;
}
void dfs(int dep){if(dep==n+1){cnt++;//該搜索第n+1行了就說明前n行已經拍好了if(nd-->0){for(int i=0;i<n;i++){cout<<ans[i]<<" \n"[i==n-1];}}return ;}for(int i=1;i<=n;i++){a[dep]=i;//遍歷假設放在了(dep,a[dep])位置if(!check(dep))continue;//如果不行 跳ans.push_back(i);//存起來放在了第i列dfs(dep+1);//搜索下一行ans.pop_back();//回溯a[dep]=0;//數組的a[dep]按理也得恢復現場}}
int main(){cin>>n;dfs(1);cout<<cnt;return 0;
}

?P2392 kkksc03考前臨時抱佛腳 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

#include<bits/stdc++.h>
using namespace std;
int a[5],i,j,k,sum,t,homework[21],dp[2501];
//dp[j]表示只考慮前面幾個商品 在總時間為j的條件下所能得到的最大價值(最大時間)
int main(){for(i=1;i<=4;i++)cin>>a[i];for(i=1;i<=4;i++){sum=0;	for(j=1;j<=a[i];j++){cin>>homework[j];//輸入sum+=homework[j];}//總時間累加
//最快洗車時間的問題for(j=1;j<=a[i];j++)for(k=sum/2;k>=homework[j];k--)//只要是總和的一半dp[k]=max(dp[k],dp[k-homework[j]]+homework[j]);//01背包t+=sum-dp[sum/2];//累加為另一個腦子memset(dp,0,sizeof(dp));}cout<<t;//輸出return 0;
}

?P1443 馬的遍歷 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

#include <bits/stdc++.h>
#define int long long
#define PII pair<int,int>
using namespace std;
const int N=406;
int xx[]={2,2,-2,-2,1,-1,1,-1};
int yy[]={1,-1,-1,1,2,-2,-2,2};//八個方向
int mp[N][N];int cnt=0;int n,m;void bfs(int x,int y,int c){//廣度優先搜索模板queue<PII>q;q.push({x,y});mp[x][y]=c;while(!q.empty()){auto cur=q.front();q.pop();int cx=cur.first;int cy=cur.second;for(int i=0;i<8;i++){int tx=cx+xx[i];int ty=cy+yy[i];if(tx>=1&&tx<=n&&ty>=1&&ty<=m&&mp[tx][ty]==-1){mp[tx][ty]=mp[cx][cy]+1;//從上一個的轉移一次 所以要在上一次的基礎上+1q.push({tx,ty});}}}
}void solve(){cin>>n>>m;int x,y;cin>>x>>y;memset(mp, -1, sizeof(mp));// mp[x][y]=0;bfs(x,y,0);for(int i=1;i<=n;i++){//一定要看好時從(0,0)開始還是從(1,1)開始for(int j=1;j<=m;j++){printf("%-5d",mp[i][j]);//-5是每一行開頭的那個元素不產生占位5 4 3 2 這樣//5是每一行從開頭就產生占位 5 4 3 2這樣}cout<<'\n';}
}signed main(){int t=1;while(t--)solve();return 0;
}
#include <iostream>
#include <queue>
using namespace std;
int k[205], n; // k[i] 表示在i樓能向上或向下走多少步struct node { // 定義一個結構體int point, step; // point是現在在哪一樓,step是現在點了幾次按鈕到達這一樓
};bool vis[205]; // 記錄之前是否到達過(或者可以到達)這個樓數,那么下一次的統計的步數肯定大于等于這一樓記錄過的最少步數,不更新這一樓的答案。int BFS(int a, int b) {queue < node > q;q.push(node{a, 0});while (q.size()) { // 隊列里還有元素就用隊頭元素嘗試更新node p = q.front();if (p.point == b) { // 到了目標樓層return p.step; // 返回步數}q.pop();if (p.point + k[p.point] >= 1 && p.point + k[p.point] <= n && ! vis[p.point + k[p.point]]) { // 往上走,符合條件(在1~n層之間)且沒被訪問過(說明是第一次入隊,也就是這次被訪問就是最短的步數)q.push((node){p.point + k[p.point], p.step + 1});vis[p.point + k[p.point]] = 1;}if (p.point - k[p.point] >= 1 && p.point - k[p.point] <= n && ! vis[p.point - k[p.point]]) { // 往下走q.push((node){p.point - k[p.point], p.step + 1});vis[p.point - k[p.point]] = 1;}}return -1; // 無解
}int main() {int a, b;cin >> n >> a >> b;for (int i = 1; i <= n; i++) cin >> k[i];//每個電梯的能量值cout << BFS(a, b);
}

P1135 奇怪的電梯 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)?

#include <iostream>
#include <queue>
using namespace std;
int k[205], n; // k[i] 表示在i樓能向上或向下走多少步struct node { // 定義一個結構體int point, step; // point是現在在哪一樓,step是現在點了幾次按鈕到達這一樓
};bool vis[205]; // 記錄之前是否到達過(或者可以到達)這個樓數,那么下一次的統計的步數肯定大于等于這一樓記錄過的最少步數,不更新這一樓的答案。int BFS(int a, int b) {queue < node > q;q.push(node{a, 0});while (q.size()) { // 隊列里還有元素就用隊頭元素嘗試更新node p = q.front();if (p.point == b) { // 到了目標樓層return p.step; // 返回步數}q.pop();if (p.point + k[p.point] >= 1 && p.point + k[p.point] <= n && ! vis[p.point + k[p.point]]) { // 往上走,符合條件(在1~n層之間)且沒被訪問過(說明是第一次入隊,也就是這次被訪問就是最短的步數)q.push((node){p.point + k[p.point], p.step + 1});vis[p.point + k[p.point]] = 1;}if (p.point - k[p.point] >= 1 && p.point - k[p.point] <= n && ! vis[p.point - k[p.point]]) { // 往下走q.push((node){p.point - k[p.point], p.step + 1});vis[p.point - k[p.point]] = 1;}}return -1; // 無解
}int main() {int a, b;cin >> n >> a >> b;for (int i = 1; i <= n; i++) cin >> k[i];cout << BFS(a, b);
}

P2895 [USACO08FEB] Meteor Shower S - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)?

P1036 [NOIP2002 普及組] 選數 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)

#include <bits/stdc++.h>
using namespace std;
int n,k;
const int N=26;
int a[N],vis[N]={0};
int ans=0;
typedef long long ll;
bool isprime(int x){for(int i=2;i<=x/i;i++){if(x%i==0)return 0;}return 1;
}
void dfs(int m, int sum, int startx){//最重要的遞歸
//m代表現在選擇了多少個數
//sum表示當前的和
//startx表示升序排列,以免算重if(m == k){//如果選完了的話if(isprime(sum))ans++;//ans加一return ;}for(int i = startx; i < n; i++)//往后找dfs(m + 1, sum + a[i], i + 1);//遞歸//步數要加一,和也要加//升序起始值要變成i+1,以免算重return ;//這一個步驟下,所有的都枚舉完了//直接返回去
}
int main(){scanf("%d%d",&n,&k);//輸入for(int i = 0; i < n; i++)scanf("%d",&a[i]);//循環讀入dfs(0,0,0);//調用函數printf("%d\n",ans);//輸出答案return 0;//結束程序
}
//另一種思路錯的原因是因為可能出現 1 2 1 1 3 6 7這樣的情況

P2036 [COCI2008-2009 #2] PERKET - 洛谷 | 計算機科學教育新生態 (luogu.com.cn)?

#include<bits/stdc++.h>		//非常穩健的萬能頭
using namespace std;
long long int s[20],b[20],f[20];	//s表示酸度,b表示甜度,f記錄是否查找
long long int n,j,c=1,y=0,ans=99999999999;		//ans記錄最小值
void dfs(int x){if(x>n)return ;		//最多選n種調料,超過不做操作for(int i=1;i<=n;i++){if(f[i]==0)		//沒有查找過的才操作{c*=s[i];y+=b[i];ans=min(ans,abs(c-y));	//取最小值f[i]=1;		//記錄dfs(x+1);f[i]=0;		//回溯c/=s[i];y-=b[i];}}
}
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>s[i]>>b[i];}dfs(1);cout<<ans;
}

?

#include <btis/stdc++.h>
using namespace std;
int a[15],b[15],n,ans=1<<30; //a表示酸度,b表示甜度,ans為最終答案。
void dfs(int i,int sj,int th){if(i>n){if(!th)return ; //如果沒有選任何一種材料。ans=min(ans,abs(sj-th)); //否則更新答案。return ;}dfs(i+1,sj,th); //選dfs(i+1,sj*a[i],th+b[i]); //不選
}
int main(){int i;scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d %d",&a[i],&b[i]);dfs(1,1,0);  //搜索,注意酸度初始值一定為1,甜度初始值一定為0.printf("%d",ans);return 0;
}

?

?

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

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

相關文章

有道QAnything背后的故事---關于RAG的一點經驗分享

近日&#xff0c;我們開源了有道自研的RAG&#xff08;Retrieval Augmented Generation) 引擎QAnything。該引擎允許用戶上傳PDF、圖片、Word、Excel、PowerPoint等多種格式的文檔&#xff0c;并實現類似于ChatGPT的互動問答功能&#xff0c;其中每個答案都能精確追溯到相應的文…

了解Spring中Bean:配置與作用域

作為一名對技術充滿熱情的學習者&#xff0c;我一直以來都深刻地體會到知識的廣度和深度。在這個不斷演變的數字時代&#xff0c;我遠非專家&#xff0c;而是一位不斷追求進步的旅行者。通過這篇博客&#xff0c;我想分享我在某個領域的學習經驗&#xff0c;與大家共同探討、共…

遞歸回溯剪枝-括號生成

LCR 085. 括號生成 - 力扣&#xff08;LeetCode&#xff09; 一. 根據題意&#xff0c;分析出符合要求的括號組合需要滿足以下兩個條件&#xff1a; 1. 左括號數或者右括號數都不能超過 n&#xff1b; 2. 從最左側開始的每一個子集&#xff0c;不可以出現右括號數大于左括號數&…

CF 1934B

冗長的代碼&#xff08;枚舉解法&#xff09; #include<bits/stdc.h>using namespace std;void solve() {int n;cin>>n;if(n1||n3||n6||n10||n15){cout<<1<<endl;return;}int cnt0;if(n>100){int tempn/15;if(temp>6){n-(temp-6)*15;cnttemp-6;…

算法復習之前綴和【備戰藍橋杯】

一維前綴和 S[i] a[1] a[2] ... a[i] a[l] ... a[r] S[r] - S[l - 1]二維前綴和 S[i, j] 第i行j列格子左上部分所有元素的和 以(x1, y1)為左上角&#xff0c;(x2, y2)為右下角的子矩陣的和為&#xff1a; S[x2, y2] - S[x1 - 1, y2] - S[x2, y1 - 1] S[x1 - 1, y1 - …

中國電子學會(CEIT)2020年06月真題C語言軟件編程等級考試四級(含詳細解析答案)

中國電子學會&#xff08;CEIT&#xff09;考評中心歷屆真題&#xff08;含詳細解析答案&#xff09; C語言軟件編程等級考試四級 2020年06月 編程題四道 總分:100分一、最長上升子序列&#xff08;25分&#xff09; 一個數的序列bi&#xff0c;當b1 < b2< … &l…

長期可用的文件二維碼怎么做?在線制作可修改的文件活碼

怎么做一個可以長期使用的文件二維碼呢&#xff1f;現在通過二維碼來傳遞文件是很流行的一種方式&#xff0c;將文件生成二維碼后印刷上墻或者分享給他人都可以快速完成文件的傳播&#xff0c;所以在下發通知、資料等方面用途較多。那么文件二維碼該如何生成呢&#xff1f; 想…

Linux內存地址空間

目錄 一、虛擬地址空間 1.虛擬地址空間的定義 2.虛擬地址空間的布局 二、內存壁壘 1.內存壁壘的定義?編輯 2.段錯誤 三、內存映射的建立與解除 &#xff08;1&#xff09;mmap &#xff08;2&#xff09;munmap &#xff08;3&#xff09;堆內存的分配和釋放 1.sbrk …

Android13 設置固定熱點ip地址192.168.43.1

Android13 設置固定熱點ip地址192.168.43.1 文章目錄 Android13 設置固定熱點ip地址192.168.43.1一、前言二、設置固定ip地址實現1、Android13 代碼中的實現&#xff1a;添加屬性寫法&#xff1a; 2、Android11 或者更舊的代碼中的實現&#xff1a; 三、其他1、Android 代碼獲連…

Python中學習調試requests模塊時出現的大坑(1)

為防止迷路: 學習機械相關,請關注公眾號:南大盛聯 學習軟件,硬件,請關注公眾號號:一訓微課 cmd模式下 不知道上面這行的話,需要補課。 pip install requests 這個不知道的話,也要補課 pip是python的安裝工具。 install是安裝的意思 requests是我們需要安裝的模…

HTML超鏈接去下劃線

當在HTML中創建超鏈接時&#xff0c;默認情況下會顯示為帶有下劃線的藍色文本。如果想要去掉下劃線&#xff0c;可以使用CSS樣式來實現。 示例代碼&#xff1a; <!DOCTYPE html> <html> <head> <style> a {text-decoration: none;color: blue; /* 設…

微信小程序 --- 事件處理

事件處理 一個應用僅僅只有界面展示是不夠的&#xff0c;還需要和用戶做交互&#xff0c;例如&#xff1a;響應用戶的點擊、獲取用戶輸入的值等等&#xff0c;在小程序里邊&#xff0c;我們就通過編寫 JS 腳本文件來處理用戶的操作 1. 事件綁定和事件對象 小程序中綁定事件與…

sora會是AGI的拐點么?

©作者|謝國斌 來源|神州問學 OpenAI近期發布的Sora是一個文本到視頻的生成模型。這項技術可以根據用戶輸入的描述性提示生成視頻&#xff0c;延伸現有視頻的時間&#xff0c;以及從靜態圖像生成視頻。Sora可以創建長達一分鐘的高質量視頻&#xff0c;展示出對用戶提示的精…

PoC免寫攻略

在網絡安全領域&#xff0c;PoC&#xff08;Proof of Concept&#xff09;起著重要的作用&#xff0c;并且在安全研究、漏洞發現和漏洞利用等方面具有重要的地位。攻擊方視角下&#xff0c;常常需要圍繞 PoC 做的大量的工作。常常需要從手動測試開始編寫 PoC&#xff0c;再到實…

vue項目電商

這個項目功能有首頁&#xff0c;分類&#xff0c;商品詳情&#xff0c;購物車&#xff0c;用戶注冊、登錄等等的實現&#xff0c;并且可以在手機上進行展示。 git倉庫地址&#xff1a;https://gitee.com/BisShen/project.git

應用層http協議包解析與https加密策略解析

文章目錄 一.應用層協議--http協議基礎認知二.https協議加密策略解析加密策略1--通信雙方只使用對稱加密加密策略2--通信雙方使用單方非對稱加密加密策略3--通信雙方都使用非對稱加密加密策略4--非對稱加密與對稱加密配合使用中間人攻擊數據簽名與CA證書HTTPS數據安全認證的本質…

二維碼門樓牌管理系統技術服務的分類與應用

文章目錄 前言一、二維碼門樓牌管理系統的分類二、二維碼門樓牌管理系統的應用優勢三、結論 前言 隨著城市管理的精細化和智能化&#xff0c;二維碼門樓牌管理系統成為了現代城市管理的重要工具。該系統將傳統的門牌、樓牌、戶牌與二維碼技術相結合&#xff0c;實現了信息的快…

如何優化一個運行緩慢的SQL查詢?有哪些常見的優化技巧?

如何優化一個運行緩慢的SQL查詢&#xff1f; 當面對一個運行緩慢的SQL查詢時&#xff0c;優化是提升數據庫性能的關鍵步驟。優化查詢不僅可以減少查詢執行時間&#xff0c;還可以降低系統資源消耗&#xff0c;提高整體的系統吞吐量。以下將詳細探討如何優化一個運行緩慢的SQL查…

MySQL:常用的SQL語句

提醒&#xff1a;設定下面的語句是在數據庫名為 db_book執行的。 一、創建表 1. 創建t_booktype表 USE db_book; CREATE TABLE t_booktype(id INT AUTO_INCREMENT, bookTypeName VARCHAR(20),bookTypeDesc varchar(200),PRIMARY KEY (id) );2. 創建t_book表 USE db_book; C…

[筆記] wsl 禁用配置 win系統環境變量+代理

wsl 配置禁用 win系統環境變量 進入 wsl 的 /etc/wsl.conf 目錄&#xff0c;增加以下配置&#xff1a; [interop] enabledfalse appendWindowsPathfalse然后退出wsl&#xff0c;并且執行關閉正在運行的 wsl&#xff0c;執行命令 wsl --shutdown 最后重新進入wsl 即可。 參考…