mvc架構的簡單實踐----使用者註冊的實現
蒟蒻本人今天學習了mvc三層架構,以下是使用本架構開發的一個簡單的例項
主線任務---案例詳細
1.我們要再mysql中建立一個表來儲存賬號密碼
2.本次開發使用mvc三層架構來實現,分為web層service層和dao層首先要配置環境包括目錄的建立和mybatis的配置和pom檔案匯入座標
3.在dao層我們要設計兩個對於資料庫的操作,一個是根據使用者名稱來查詢使用者是否已經被註冊,和插入一個使用者.這裡sql語句較為簡單所以使用註解開發
4.第二步是service層的開發,建立UserService,來封裝對於資料庫的操作.
5.第三步是web層這裡包含兩部分一部分有servlet來作負責資料的邏輯處理的資料的傳輸,另外一部分由jsp,和jstl標籤和el表示式來實現.我還在其中新增了錯誤資訊的提示嘿嘿
支線任務---圖論拆點問題
今天寫了一道拆點問題,用到了dp,狀態壓縮,bfs的知識.簡單給大家分享一下.這道題是acwing上的一道題大兵瑞恩
本題為了解決找到取鑰匙的最短路的問題,需要將圖分層,對於不同的狀態處於不同的層級,透過位運算將
判斷狀態的複雜度壓縮到O(1).同時拿到鑰匙要改變自身狀態,遇到門只有狀態足夠才可以過去
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<map>
#include<unordered_map>
#include<stack>
#include<vector>
typedef long long LL;
using namespace std;
#define INF 0x3f3f3f3f
typedef pair<int,int>PII;
#define x first
#define y second
const int N=20;
int dis[1<<12][N][N];
int n,m,p,k,s;
int pa[120][120];
int mp[12][12];
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
void bfs(int x,int y){
queue<PII>q;
q.push({0,0});
dis[0][1][1]=0;
if(mp[1][1]){
dis[mp[1][1]][1][1]=0;
q.push({mp[1][1],0});
}
while(q.size()){
PII t=q.front();
q.pop();
int st=t.x;
int po=t.y;
int poy=t.y/10+1;
int pox=t.y%10+1;
for(int i=0;i<4;i++){
int xa=pox+dx[i],
ya=poy+dy[i];
if(xa<=0||xa>n||ya<=0||ya>m)
continue;
int pos=xa-1+(ya-1)*10;
if((pa[po][pos]==0)||(pa[po][pos]!=-1&&((st>>pa[po][pos])&1)==0))continue;
if(dis[st][xa][ya]!=-1)continue;
dis[st][xa][ya]=dis[st][pox][poy]+1;
q.push({st,pos});
if(mp[xa][ya]){
int se=st|mp[xa][ya];
dis[se][xa][ya]=dis[st][xa][ya];
q.push({se,pos});
}
}
}
int mi=1e9;
for(int i=0;i<(1<<(p+1));i++){
if(dis[i][n][m]==-1)continue;
else mi=min(mi,dis[i][n][m]);
}
if(mi==1e9)cout<<-1<<endl;
else cout<<mi<<endl;
}
int main(){
memset(dis,-1,sizeof dis);
memset(pa,-1,sizeof pa);
cin>>n>>m>>p;
cin>>k;
int x1,x2,y1,y2,d;
// dis[0][1][1]=0;
for(int i=0;i<k;i++){
cin>>x1>>y1>>x2>>y2>>d;
int f1=(x1-1+(y1-1)*10);
int f2=((y2-1)*10+x2-1);
pa[f1][f2]=d;
pa[f2][f1]=d;
}
cin>>s;
for(int i=0;i<s;i++){
cin>>x1>>y1>>d;
mp[x1][y1]|=(1<<d);
}
bfs(1,1);
return 0;
}