mvc架构的简单实践----用户注册的实现
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;
}