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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

hust 1605 bfs

發布時間:2024/10/12 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hust 1605 bfs 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思路:直接用優先隊列優化bfs。

#include<map> #include<queue> #include<vector> #include<cmath> #include<string> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #define Maxn 100010 #define inf 1<<30 using namespace std; map<int,int> g; int ans,n,ha[255],Exp[15]; char s[13]; int tar; struct QT{int val,st;int operator <(const QT &temp) const{return st>temp.st;} }; priority_queue<QT> q; int bfs(int temp) {int i,j,str;while(!q.empty()) q.pop();QT tt,p;tt.val=temp,tt.st=0;q.push(tt);while(!q.empty()){p=q.top();q.pop();str=p.val;if(str==tar) return p.st;int a,b;a=str/Exp[n-1];b=str%Exp[n-1]/Exp[n-2];temp=b*Exp[n-1]+a*Exp[n-2]+str%Exp[n-2];if(!g[temp]){tt.val=temp,tt.st=p.st+1;q.push(tt);g[temp]=1;}temp=str%Exp[n-1]*5+str/Exp[n-1];if(!g[temp]){tt.val=temp,tt.st=p.st+1;q.push(tt);g[temp]=1;}} } int main() {char str[13];int i,j;ha['A']=1;ha['G']=2;ha['C']=3;ha['T']=4;Exp[0]=1;for(int i=1;i<15;i++)Exp[i]=Exp[i-1]*5;while(scanf("%d",&n)!=EOF){ans=inf;g.clear();scanf("%s%s",str,s);tar=0;int temp=0;for(i=0;i<n;i++){tar=tar*5+ha[s[i]];temp=temp*5+ha[str[i]];}printf("%d\n",bfs(temp));}return 0; }

?

轉載于:https://www.cnblogs.com/wangfang20/p/3492790.html

總結

以上是生活随笔為你收集整理的hust 1605 bfs的全部內容,希望文章能夠幫你解決所遇到的問題。

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