-
一:需求分析
1. 問題描述
魔王總是使用自己的一種非常精練而抽象的語言講話,沒人能聽懂,但他的語言是可逐步解釋成人能聽懂的語言,因為他的語言是由以下兩種形式的規則由人的語言逐步抽象上去的:
-----------------------------------------------------------
(1) a---> (B1)(B2)....(Bm)
(2)[(op1)(p2)...(pn)]---->[o(pn)][o(p(n-1))].....[o(p1)o]
-----------------------------------------------------------
在這兩種形式中,從左到右均表示解釋.試寫一個魔王語言的解釋系統,把
他的話解釋成人能聽得懂的話.
2. 基本要求:
用下述兩條具體規則和上述規則形式(2)實現.設大寫字母表示魔王語言的詞匯 小寫字母表示人的語言的詞匯 希臘字母表示可以用大寫字母或小寫字母代換的變量.魔王語言可含人的詞匯.
(1) B --> tAdA
(2) A --> sae
3. 測試數據:
B(ehnxgz)B 解釋成 tsaedsaeezegexenehetsaedsae若將小寫字母與漢字建立下表所示的對應關系,則魔王說的話是:"天上一只鵝地上一只鵝鵝追鵝趕鵝下鵝蛋鵝恨鵝天上一只鵝地上一只鵝".
| t | d | s | a | e | z | g | x | n | h |
| 天 | 地 | 上 | 一只| 鵝 | 追 | 趕 | 下 | 蛋 | 恨 |
標簽:
語言
抽象
分
上傳時間:
2014-12-02
上傳用戶:jkhjkh1982
-
功能:編寫的計算皮亞諾相關系數
開發語言:ruby
調用:correlate(x,y)
其中,x,y為需要計算相關度的向量
調用示例:
a = [3, 6, 9, 12, 15, 18, 21]
b = [1.1, 2.1, 3.4, 4.8, 5.6]
c = [1.9, 1.0, 3.9, 3.1, 6.9]
c1 = correlate(a,a) # 1.0
c2 = correlate(a,a.reverse) # -1.0
c3 = correlate(b,c) # 0.8221970228
puts c1#,c2,c3
標簽:
correlate
ruby
計算
12
上傳時間:
2013-12-18
上傳用戶:skfreeman
-
圖的深度遍歷,輸出結果為(紅色為鍵盤輸入的數據,權值都置為1):
輸入頂點數和弧數:8 9
輸入8個頂點.
輸入頂點0:a
輸入頂點1:b
輸入頂點2:c
輸入頂點3:d
輸入頂點4:e
輸入頂點5:f
輸入頂點6:g
輸入頂點7:h
輸入9條弧.
輸入弧0:a b 1
輸入弧1:b d 1
輸入弧2:b e 1
輸入弧3:d h 1
輸入弧4:e h 1
輸入弧5:a c 1
輸入弧6:c f 1
輸入弧7:c g 1
輸入弧8:f g 1
深度優先遍歷: a b d h e c f g
程序結束.
標簽:
上傳時間:
2016-04-04
上傳用戶:lht618
-
CRC16算法的Java實現,使用方法如下:
CRC16 crc16 = new CRC16()
byte[] b = new byte[] {
// (byte) 0xF0,(byte)0xF0,(byte)0xF0,(byte)0x72
(byte) 0x2C, (byte) 0x00, (byte) 0xFF, (byte) 0xFE,
(byte) 0xFE, (byte) 0x04, (byte) 0x00, (byte) 0x00,
(byte) 0x00, (byte) 0x00 }
for (int k = 0 k < b.length k++) {
crc16.update(b[k])
}
System.out.println(Integer.toHexString(crc16.getValue()))
System.out.println(Integer.toHexString(b.length))
標簽:
Java
CRC
16
算法
上傳時間:
2014-12-20
上傳用戶:ve3344
-
對PL0原編譯器進行了以下的擴充:1.增加以下保留字else(elsesym), for(forsym),to(tosym),downto(downtosym),return(returnsym),[(lmparen),](rmparen)
2.增加了以下的運算符:+=(eplus),-=(eminus),++(dplus),--(dminus)
取址運算符&(radsym),指向運算符@(padsym)
3.修改單詞:修改不等號#為<>
4.擴充語句:(1)增加了else子句
(2)增加了for語句
5.增加運算:(1).++運算 (2).--運算;(3).+=運算 (4).-=運算;(5).&取址運算;
(6).@指向運算;
6.增加類型:(1).增加多維數組a[i1][i2][i3]……[i(n-1)][i(n-2)][in] (2).增加指針類型(任何變量都能存放指針,但不支持指針的指針,如b:=@@a應該改寫為c:=@a,b:=@c)
7.將過程procedure擴展為函數:(1).允許定義過程時在其后加參數(var a, var b,……..,var n) (2)允許通過指針向函數形式參數傳地址;(3)允許返回值;可以用 a:=p(a,b,c….,n) 返回
標簽:
downtosym
returnsym
elsesym
downto
上傳時間:
2016-07-02
上傳用戶:saharawalker
-
漢諾塔!!!
Simulate the movement of the Towers of Hanoi puzzle Bonus is possible for using animation
eg. if n = 2 A→B A→C B→C
if n = 3 A→C A→B C→B A→C B→A B→C A→C
標簽:
the
animation
Simulate
movement
上傳時間:
2017-02-11
上傳用戶:waizhang
-
本代碼為編碼開關代碼,編碼開關也就是數字音響中的
360度旋轉的數字音量以及顯示器上用的(單鍵飛梭開
關)等類似鼠標滾輪的手動計數輸入設備。
我使用的編碼開關為5個引腳的,其中2個引腳為按下
轉輪開關(也就相當于鼠標中鍵)。另外3個引腳用來
檢測旋轉方向以及旋轉步數的檢測端。引腳分別為a,b,c
b接地a,c分別接到P2.0和P2.1口并分別接兩個10K上拉
電阻,并且a,c需要分別對地接一個104的電容,否則
因為編碼開關的觸點抖動會引起輕微誤動作。本程序不
使用定時器,不占用中斷,不使用延時代碼,并對每個
細分步數進行判斷,避免一切誤動作,性能超級穩定。
我使用的編碼器是APLS的EC11B可以參照附件的時序圖
編碼器控制流水燈最能說明問題,下面是以一段流水
燈來演示。
標簽:
代碼
編碼開關
上傳時間:
2017-07-03
上傳用戶:gaojiao1999
-
【問題描述】
在一個N*N的點陣中,如N=4,你現在站在(1,1),出口在(4,4)。你可以通過上、下、左、右四種移動方法,在迷宮內行走,但是同一個位置不可以訪問兩次,亦不可以越界。表格最上面的一行加黑數字A[1..4]分別表示迷宮第I列中需要訪問并僅可以訪問的格子數。右邊一行加下劃線數字B[1..4]則表示迷宮第I行需要訪問并僅可以訪問的格子數。如圖中帶括號紅色數字就是一條符合條件的路線。
給定N,A[1..N] B[1..N]。輸出一條符合條件的路線,若無解,輸出NO ANSWER。(使用U,D,L,R分別表示上、下、左、右。)
2 2 1 2
(4,4) 1
(2,3) (3,3) (4,3) 3
(1,2) (2,2) 2
(1,1) 1
【輸入格式】
第一行是數m (n < 6 )。第二行有n個數,表示a[1]..a[n]。第三行有n個數,表示b[1]..b[n]。
【輸出格式】
僅有一行。若有解則輸出一條可行路線,否則輸出“NO ANSWER”。
標簽:
點陣
上傳時間:
2014-06-21
上傳用戶:llandlu
-
實驗源代碼
//Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("請輸入矩陣第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可傳遞閉包關系矩陣是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元關系的可傳遞閉包\n"); void warshall(int,int); int k , n; printf("請輸入矩陣的行數 i: "); scanf("%d",&k);
四川大學實驗報告 printf("請輸入矩陣的列數 j: "); scanf("%d",&n); warshall(k,n); }
標簽:
warshall
離散
實驗
上傳時間:
2016-06-27
上傳用戶:梁雪文以
-
#include "iostream" using namespace std;
class Matrix
{
private:
double** A; //矩陣A
double *b; //向量b
public:
int size;
Matrix(int );
~Matrix();
friend double* Dooli(Matrix& );
void Input();
void Disp();
};
Matrix::Matrix(int x) {
size=x;
//為向量b分配空間并初始化為0
b=new double [x];
for(int j=0;j<x;j++)
b[j]=0;
//為向量A分配空間并初始化為0
A=new double* [x];
for(int i=0;i<x;i++)
A[i]=new double [x];
for(int m=0;m<x;m++)
for(int n=0;n<x;n++)
A[m][n]=0;
}
Matrix::~Matrix() {
cout<<"正在析構中~~~~"<<endl;
delete b;
for(int i=0;i<size;i++)
delete A[i];
delete A;
}
void Matrix::Disp()
{
for(int i=0;i<size;i++)
{
for(int j=0;j<size;j++)
cout<<A[i][j]<<" ";
cout<<endl;
}
}
void Matrix::Input()
{
cout<<"請輸入A:"<<endl;
for(int i=0;i<size;i++)
for(int j=0;j<size;j++){
cout<<"第"<<i+1<<"行"<<"第"<<j+1<<"列:"<<endl;
cin>>A[i][j];
}
cout<<"請輸入b:"<<endl;
for(int j=0;j<size;j++){
cout<<"第"<<j+1<<"個:"<<endl;
cin>>b[j];
}
}
double* Dooli(Matrix& A) {
double *Xn=new double [A.size];
Matrix L(A.size),U(A.size);
//分別求得U,L的第一行與第一列
for(int i=0;i<A.size;i++)
U.A[0][i]=A.A[0][i];
for(int j=1;j<A.size;j++)
L.A[j][0]=A.A[j][0]/U.A[0][0];
//分別求得U,L的第r行,第r列
double temp1=0,temp2=0;
for(int r=1;r<A.size;r++){
//U
for(int i=r;i<A.size;i++){
for(int k=0;k<r-1;k++)
temp1=temp1+L.A[r][k]*U.A[k][i];
U.A[r][i]=A.A[r][i]-temp1;
}
//L
for(int i=r+1;i<A.size;i++){
for(int k=0;k<r-1;k++)
temp2=temp2+L.A[i][k]*U.A[k][r];
L.A[i][r]=(A.A[i][r]-temp2)/U.A[r][r];
}
}
cout<<"計算U得:"<<endl;
U.Disp();
cout<<"計算L的:"<<endl;
L.Disp();
double *Y=new double [A.size];
Y[0]=A.b[0];
for(int i=1;i<A.size;i++ ){
double temp3=0;
for(int k=0;k<i-1;k++)
temp3=temp3+L.A[i][k]*Y[k];
Y[i]=A.b[i]-temp3;
}
Xn[A.size-1]=Y[A.size-1]/U.A[A.size-1][A.size-1];
for(int i=A.size-1;i>=0;i--){
double temp4=0;
for(int k=i+1;k<A.size;k++)
temp4=temp4+U.A[i][k]*Xn[k];
Xn[i]=(Y[i]-temp4)/U.A[i][i];
}
return Xn;
}
int main()
{
Matrix B(4);
B.Input();
double *X;
X=Dooli(B);
cout<<"~~~~解得:"<<endl;
for(int i=0;i<B.size;i++)
cout<<"X["<<i<<"]:"<<X[i]<<" ";
cout<<endl<<"呵呵呵呵呵";
return 0;
}
標簽:
道理特分解法
上傳時間:
2018-05-20
上傳用戶:Aa123456789