傳送門:ccf201803-3 url對映
做的第一道大模擬,**一小時,debug四小時,很難受。
總的來說不是一道很麻煩的題,但有一些坑需要說明:
除了最後乙個引數為時,規則末尾有無『/』是不同的;
有可能出現空規則,即單獨乙個『/』;
若乙個url滿足多個規則,按照輸入時的順序輸出第乙個;
型別引數需要抹去前導零。
最自閉的乙個坑,花了兩個多小時才找出來的,是我下意識使用了map作為儲存規則與規則名稱的結構。對,就是map,first用來存規則,second用來存規則名稱。喝喝,看起來不用開兩個陣列很省事,實際上暗藏殺機,map事實上是排好序了的。。。這樣會對上面的第三點產生影響。但用map也不是不可以,據我所知有c++11有一種map叫unordered_map,應該可以解決順序的問題。
根據如上所述需要注意的點,我編了個樣例,可以測試一下:
!樣例輸入
7 7/articles/2003/ special_case_2003
/articles/year_archive_1
/articles/// month_archive
/articles//// article_detail
/static/static_serve
/a const_string
/ empty
/articles/2004/
/articles/2004/06
/articles/1985/09/aloha/
/articles/hello/
/static/js/jquery.js/a/
!樣例輸出
404404
article_detail 1985 9 aloha
404static_serve js/jquery.js
const_string
empty
下面上**:
#include #define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const int max0 = 128;
int n, m;
string s1[max0], s2[max0]; //規則及規則名
string sec[max0][max0]; //第i條規則的第j個引數
bool endflag[max0]; //規則是否以'/'結尾
void read()
sec[i][cnt] += s1[i][j];}}
}void search(string s)
string currule = sec[i][cnt], ssec = "";
if(currule == "")
if(s[j] > '9' || s[j] < '0')
isans = false;
ssec += s[j++];
}if(!isans)
break;
while(ssec[0] == '0')
ssec.erase(ssec.begin());
ans.push_back(ssec);
}if(currule == "")
ssec += s[j++];
}ans.push_back(ssec);
}if(currule == "")
if(currule[0] != '<')
ssec += s[j++];
}if(sec[i][cnt] != ssec)
}++cnt;
}if(j < s.size())
isans = false;
if(cnt && isans && sec[i][cnt-1] != "")
if(isans)
}cout << "404\n";
}void solve()
}int main()
CSP認證 201803 3 URL對映
題意 從簡條件下的 url 對映 url對映 url映 射 模擬題。所有 url 位址 url位址 url地 址 以 開頭,以 分隔,合法字元只有大小寫英文本母 阿拉伯數字 減號 下劃線 katex parse error expected group after at position 1 和小數...
URL萬用字元對映
url萬用字元對映 我們還可以通過萬用字元對url對映進行配置,萬用字元有 和 兩個字元。其中 表示1個字元,表示匹配多個字元,表示匹配0個或多個路徑。例如 helloworld index?可以匹配 helloworld indexa helloworld indexb 但不能匹配 hellowo...
python Django對映URL報錯
系統 ubuntu16.04 x64 django 2.1 python 3.5 報錯資訊很長,有效的基本是下面這些 問題原因 猜測是django的版本問題導致的。啟用虛擬環境後可以檢視django的版本,指令為 python m django version 解決方法 1.換低版本的django,...