日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

练手CF3-C - Wormhouse

發布時間:2024/4/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 练手CF3-C - Wormhouse 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

深搜,亮點在那個剪枝,flag代表是否搜索數組從開始到當前一直等于原始數組同位置的數,如果是真,就從原始數組的當前位置的書開始搜,否則就從0開始搜。

見代碼。

?

#include <iostream> #include <cstring>using namespace std; int n,m,beg,origin[2003]; int mp[103][103]; bool vis[103][103]; int cnt; int stk[2010]; bool check() {int i;for(i=0;i<=m;i++){if(stk[i]==origin[i])continue;if(stk[i]<origin[i])return false;if(stk[i]>origin[i])return true;}return false; }void dfs(int bg,bool flag) { // cout<<cnt<<endl;if(cnt==m+1){ // for(int i=0;i<=m;i++) // cout<<stk[i]<<' '; // cout<<endl;if(stk[cnt-1]==beg&&check()){return;}else{return;}}for(int i=1;i<=n;i++){if(flag&&i<origin[cnt])continue;if(mp[bg][i]&&!vis[bg][i]){vis[bg][i]=true;vis[i][bg]=true;stk[cnt++]=i;dfs(i,flag&&i==origin[cnt-1]); // cout<<stk[cnt]<<endl;if(cnt==m+1&&stk[cnt-1]==beg&&check())return; // cout<<" "<<cnt<<endl;cnt--; // cout<<" "<<cnt<<endl;vis[bg][i]=false;vis[i][bg]=false;}}return; } int main() {cin>>n>>m;int i;cnt=1;memset(mp,0,sizeof(mp));memset(vis,false,sizeof(vis));cin>>origin[0];beg=origin[0];for(i=1;i<=m;i++){cin>>origin[i];mp[origin[i-1]][origin[i]]=1;mp[origin[i]][origin[i-1]]=1;}for(i=1;i<=n;i++) // { // for(int j=1;j<=n;j++) // cout<<mp[i][j]<<' '; // cout<<endl;}stk[0]=beg;dfs(beg,true); // cout<<cnt<<endl;if(cnt==m+1){for(i=0;i<=m;i++)cout<<stk[i]<<' ';cout<<endl;}elsecout<<"No solution"<<endl;return 0; }

  

轉載于:https://www.cnblogs.com/aljxy/p/3415684.html

總結

以上是生活随笔為你收集整理的练手CF3-C - Wormhouse的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。