實驗e----可判定的dfa的空問題
time limit:1000ms,special time limit:2500ms,memory limit:32768kb
total submit users:138,accepted users:130
problem 13122 :no special judgement
problem description
edfa= 證明:edfa是可判定的語言。 實驗方法:編寫乙個演算法/程式,對於任意給定的輸入(/確定性有限狀態自動機dfa),可以判定edfa。
input
有多個測試序列,測試結束於測試檔案結束;
每個測試序列相對應乙個dfa,其第一行為2個正整數n,m,表示有n個狀態,狀態集q=。預設起始狀態為q0,字符集有m個字元。0 < n,m ≤100。隨後n行,每行m個空格隔開的整數δij,( 0 ≤ i < n , 0 ≤ j < m )表示dfa的狀態轉移函式。δij表示第i個狀態在輸入j(字母表第j個字元)時,變為第δij個狀態。每個dfa的最後一行,首先乙個整數f,表示接受狀態數,然後f個空格隔開的整數fk(0 ≤ k < f),是所有接受狀態的編號。其中 0 ≤ δij,fk
< n。
output
對於每個輸入的dfa,輸出」yes」,如果該dfa確實不接受任何串;否則,輸出」no」。
sample input
1 20 01 0
1 20 0
0
sample output
noyes
judge tips
樣例中2個dfa,第乙個是接受所有輸入的dfa,第二個是拒絕所有輸入的dfa,所以,第乙個dfa輸出」no」,而第二個是」yes」。
a:是否接受w的問題。adfa是可判定的。anfa是可判定的。ares是可判定的。edfa是可判定的。eqdfa是可判定的。p100。核心思想:圖靈機跟蹤dfa的狀態和當前位置,狀態和位置的變化由轉移函式決定。
b:dfa不接受任意串存在以下幾種情況:沒有接受狀態、接受狀態獨立、接受狀態和起始狀態不在同乙個團中;基於以上三種情況編寫**
不要去根據dfa可能接受某乙個串去判斷乙個dfa大的可判定性,而是從相反的方向來考慮問題:即判斷dfa是否拒絕所有的串。dfa拒絕所有的串只可能存在以上三種情況。
#include#include#include#includeusing namespace std;bool vis[110];
bool ac[110];
int num[110][110];
int n, m, f, p, cnt;
bool dfs(int k)
for(int i = 0; i < m; i++)
if(!vis[num[k][i]] && dfs(num[k][i]))
return 0;
}int main()
if(f)
if(dfs(0))
printf("no\n");
else
printf("yes\n");
else
printf("yes\n");
}return 0;
}
湖大寢室被盜
湖大校園非常混亂。請看到這篇文章的還未上湖南大學,卻勵志要上湖南大學的小同學們想想清楚。因為是開放式校園,所以和外面的人接觸很多。一棟宿舍裡人來人往,非常多人 還大多是外面的人 舍管阿姨根本不清楚哪個是哪個。財產安全問題是乙個非常重要的問題。所以如果家裡一貧如洗,可以來這裡。小李子就是這樣乙個人。在...
湖大寢室被盜
湖大校園非常混亂。請看到這篇文章的還未上湖南大學,卻勵志要上湖南大學的小同學們想想清楚。因為是開放式校園,所以和外面的人接觸很多。一棟宿舍裡人來人往,非常多人 還大多是外面的人 舍管阿姨根本不清楚哪個是哪個。財產安全問題是乙個非常重要的問題。所以如果家裡一貧如洗,可以來這裡。小李子就是這樣乙個人。在...
C 練習 四大湖
總時間限制 1000ms 記憶體限制 65536kb 描述 我國有4大淡水湖。a說 洞庭湖最大,洪澤湖最小,鄱陽湖第三。b說 洪澤湖最大,洞庭湖最小,鄱陽湖第二,太湖第三。c說 洪澤湖最小,洞庭湖第三。d說 鄱陽湖最大,太湖最小,洪澤湖第二,洞庭湖第三。已知這4個湖的大小均不相等,4個人每人僅答對乙...