-
1.有三根桿子A,B,C。A桿上有若干碟子
2.每次移動(dòng)一塊碟子,小的只能疊在大的上面
3.把所有碟子從A桿全部移到C桿上
經(jīng)過(guò)研究發(fā)現(xiàn),漢諾塔的破解很簡(jiǎn)單,就是按照移動(dòng)規(guī)則向一個(gè)方向移動(dòng)金片:
如3階漢諾塔的移動(dòng):A→C,A→B,C→B,A→C,B→A,B→C,A→C
此外,漢諾塔問(wèn)題也是程序設(shè)計(jì)中的經(jīng)典遞歸問(wèn)題
標(biāo)簽:
移動(dòng)
發(fā)現(xiàn)
上傳時(shí)間:
2016-07-25
上傳用戶(hù):gxrui1991
-
1. 下列說(shuō)法正確的是 ( )
A. Java語(yǔ)言不區(qū)分大小寫(xiě)
B. Java程序以類(lèi)為基本單位
C. JVM為Java虛擬機(jī)JVM的英文縮寫(xiě)
D. 運(yùn)行Java程序需要先安裝JDK
2. 下列說(shuō)法中錯(cuò)誤的是 ( )
A. Java語(yǔ)言是編譯執(zhí)行的
B. Java中使用了多進(jìn)程技術(shù)
C. Java的單行注視以//開(kāi)頭
D. Java語(yǔ)言具有很高的安全性
3. 下面不屬于Java語(yǔ)言特點(diǎn)的一項(xiàng)是( )
A. 安全性
B. 分布式
C. 移植性
D. 編譯執(zhí)行
4. 下列語(yǔ)句中,正確的項(xiàng)是 ( )
A . int $e,a,b=10
B. char c,d=’a’
C. float e=0.0d
D. double c=0.0f
標(biāo)簽:
Java
A.
B.
C.
上傳時(shí)間:
2017-01-04
上傳用戶(hù):netwolf
-
DS1302 是 DALLAS 公司推出的涓流充電時(shí)鐘芯用 內(nèi)含有一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM,通過(guò)簡(jiǎn)單的串行接口與單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘/日歷電路提供秒、分、時(shí)、日、日期、月、年的信息,每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整,時(shí)鐘操作可通過(guò)AM/PM指示決定采用24或12 小時(shí)格式。DS1302 與單片機(jī)之間能簡(jiǎn)單地采用同步串行的方式進(jìn)行通信,僅需用到三個(gè)口線(xiàn): (DRES(復(fù)位),(2)I/O(數(shù)據(jù)線(xiàn)), (B)SCLK(事行時(shí)鐘)。時(shí)鐘/RAM的讀/寫(xiě)數(shù)據(jù)以會(huì)個(gè)字節(jié)或多達(dá)31個(gè)字節(jié)的字符組方式通信。DS1302 工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW。 DS1302是由DS1202 改進(jìn)而來(lái),增加了以下的特性:雙電源管腳用于主電源和備份電源供應(yīng),Vcc!為可編程涓流充電電源,附加七個(gè)字節(jié)存儲(chǔ)器。它廣泛應(yīng)用于電話(huà)、傳真、便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。
標(biāo)簽:
ds1302
ds3231
ds1307
時(shí)鐘模塊
上傳時(shí)間:
2022-01-06
上傳用戶(hù):zhanglei193
-
TLC2543是TI公司的12位串行模數(shù)轉(zhuǎn)換器,使用開(kāi)關(guān)電容逐次逼近技術(shù)完成A/D轉(zhuǎn)換過(guò)程。由于是串行輸入結(jié)構(gòu),能夠節(jié)省51系列單片機(jī)I/O資源;且價(jià)格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應(yīng)用。
TLC2543的特點(diǎn)
(1)12位分辯率A/D轉(zhuǎn)換器;
(2)在工作溫度范圍內(nèi)10μs轉(zhuǎn)換時(shí)間;
(3)11個(gè)模擬輸入通道;
(4)3路內(nèi)置自測(cè)試方式;
(5)采樣率為66kbps;
(6)線(xiàn)性誤差±1LSBmax;
(7)有轉(zhuǎn)換結(jié)束輸出EOC;
(8)具有單、雙極性輸出;
(9)可編程的MSB或LSB前導(dǎo);
(10)可編程輸出數(shù)據(jù)長(zhǎng)度。
TLC2543的引腳排列及說(shuō)明
TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說(shuō)明見(jiàn)表1
TLC2543電路圖和程序欣賞
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit clock=P1^0; sbit d_in=P1^1;
sbit d_out=P1^2;
sbit _cs=P1^3;
uchar a1,b1,c1,d1;
float sum,sum1;
double sum_final1;
double sum_final;
uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar wei[]={0xf7,0xfb,0xfd,0xfe};
void delay(unsigned char b) //50us
{
unsigned char a;
for(;b>0;b--)
for(a=22;a>0;a--);
}
void display(uchar a,uchar b,uchar c,uchar d)
{
P0=duan[a]|0x80;
P2=wei[0];
delay(5);
P2=0xff;
P0=duan[b];
P2=wei[1];
delay(5);
P2=0xff;
P0=duan[c];
P2=wei[2];
delay(5);
P2=0xff;
P0=duan[d];
P2=wei[3];
delay(5);
P2=0xff;
}
uint read(uchar port)
{
uchar i,al=0,ah=0;
unsigned long ad;
clock=0;
_cs=0;
port<<=4;
for(i=0;i<4;i++)
{
d_in=port&0x80;
clock=1;
clock=0;
port<<=1;
}
d_in=0;
for(i=0;i<8;i++)
{
clock=1;
clock=0;
}
_cs=1;
delay(5);
_cs=0;
for(i=0;i<4;i++)
{
clock=1;
ah<<=1;
if(d_out)ah|=0x01;
clock=0;
}
for(i=0;i<8;i++)
{
clock=1;
al<<=1;
if(d_out) al|=0x01;
clock=0;
}
_cs=1;
ad=(uint)ah;
ad<<=8;
ad|=al;
return(ad);
}
void main()
{
uchar j;
sum=0;sum1=0;
sum_final=0;
sum_final1=0;
while(1)
{
for(j=0;j<128;j++)
{
sum1+=read(1);
display(a1,b1,c1,d1);
}
sum=sum1/128;
sum1=0;
sum_final1=(sum/4095)*5;
sum_final=sum_final1*1000;
a1=(int)sum_final/1000;
b1=(int)sum_final%1000/100;
c1=(int)sum_final%1000%100/10;
d1=(int)sum_final%10;
display(a1,b1,c1,d1);
}
}
標(biāo)簽:
2543
TLC
上傳時(shí)間:
2013-11-19
上傳用戶(hù):shen1230
-
PCB LAYOUT技術(shù)大全---初學(xué)者必看!
PROTEL相關(guān)疑問(wèn)
1.原理圖常見(jiàn)錯(cuò)誤:
(1)ERC報(bào)告管腳沒(méi)有接入信號(hào):
a. 創(chuàng)建封裝時(shí)給管腳定義了I/O屬性;
b.創(chuàng)建元件或放置元件時(shí)修改了不一致的grid屬性,管腳與線(xiàn)沒(méi)有連上;
c. 創(chuàng)建元件時(shí)pin方向反向,必須非pin name端連線(xiàn)。
(2)元件跑到圖紙界外:沒(méi)有在元件庫(kù)圖表紙中心創(chuàng)建元件。
(3)創(chuàng)建的工程文件網(wǎng)絡(luò)表只能部分調(diào)入pcb:生成netlist時(shí)沒(méi)有選擇為global。
(4)當(dāng)使用自己創(chuàng)建的多部分組成的元件時(shí),千萬(wàn)不要使用annotate.
2.PCB中常見(jiàn)錯(cuò)誤:
(1)網(wǎng)絡(luò)載入時(shí)報(bào)告NODE沒(méi)有找到:
a. 原理圖中的元件使用了pcb庫(kù)中沒(méi)有的封裝;
b. 原理圖中的元件使用了pcb庫(kù)中名稱(chēng)不一致的封裝;
c. 原理圖中的元件使用了pcb庫(kù)中pin number不一致的封裝。如三極管:sch中pin number 為e,b,c, 而pcb中為1,2,3。
標(biāo)簽:
LAYOUT
PCB
初學(xué)者
上傳時(shí)間:
2013-10-20
上傳用戶(hù):kbnswdifs
-
高精度乘法基本思想和加法一樣。其基本流程如下:
①讀入被乘數(shù)s1,乘數(shù)s2
②把s1、s2分成4位一段,轉(zhuǎn)成數(shù)值存在數(shù)組a,b中;記下a,b的長(zhǎng)度k1,k2;
③i賦為b中的最低位;
④從b中取出第i位與a相乘,累加到另一數(shù)組c中;(注意:累加時(shí)錯(cuò)開(kāi)的位數(shù)應(yīng)是多少位
?)
⑤i:=i-1;檢測(cè)i值:小于k2則轉(zhuǎn)⑥,否則轉(zhuǎn)④
⑥打印結(jié)果
標(biāo)簽:
高精度
乘法
加法
基本流程
上傳時(shí)間:
2015-08-16
上傳用戶(hù):源弋弋
-
【問(wèn)題描述】
在一個(gè)N*N的點(diǎn)陣中,如N=4,你現(xiàn)在站在(1,1),出口在(4,4)。你可以通過(guò)上、下、左、右四種移動(dòng)方法,在迷宮內(nèi)行走,但是同一個(gè)位置不可以訪(fǎng)問(wèn)兩次,亦不可以越界。表格最上面的一行加黑數(shù)字A[1..4]分別表示迷宮第I列中需要訪(fǎng)問(wèn)并僅可以訪(fǎng)問(wèn)的格子數(shù)。右邊一行加下劃線(xiàn)數(shù)字B[1..4]則表示迷宮第I行需要訪(fǎng)問(wèn)并僅可以訪(fǎng)問(wèn)的格子數(shù)。如圖中帶括號(hào)紅色數(shù)字就是一條符合條件的路線(xiàn)。
給定N,A[1..N] B[1..N]。輸出一條符合條件的路線(xiàn),若無(wú)解,輸出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
【輸入格式】
第一行是數(shù)m (n < 6 )。第二行有n個(gè)數(shù),表示a[1]..a[n]。第三行有n個(gè)數(shù),表示b[1]..b[n]。
【輸出格式】
僅有一行。若有解則輸出一條可行路線(xiàn),否則輸出“NO ANSWER”。
標(biāo)簽:
點(diǎn)陣
上傳時(shí)間:
2014-06-21
上傳用戶(hù):llandlu
-
實(shí)驗(yàn)源代碼
//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("請(qǐng)輸入矩陣第%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("可傳遞閉包關(guān)系矩陣是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元關(guān)系的可傳遞閉包\n"); void warshall(int,int); int k , n; printf("請(qǐng)輸入矩陣的行數(shù) i: "); scanf("%d",&k);
四川大學(xué)實(shí)驗(yàn)報(bào)告 printf("請(qǐng)輸入矩陣的列數(shù) j: "); scanf("%d",&n); warshall(k,n); }
標(biāo)簽:
warshall
離散
實(shí)驗(yàn)
上傳時(shí)間:
2016-06-27
上傳用戶(hù):梁雪文以
-
題目:古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?
//這是一個(gè)菲波拉契數(shù)列問(wèn)題
public class lianxi01 {
public static void main(String[] args) {
System.out.println("第1個(gè)月的兔子對(duì)數(shù): 1");
System.out.println("第2個(gè)月的兔子對(duì)數(shù): 1");
int f1 = 1, f2 = 1, f, M=24;
for(int i=3; i<=M; i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i +"個(gè)月的兔子對(duì)數(shù): "+f2);
}
}
}
【程序2】
題目:判斷101-200之間有多少個(gè)素?cái)?shù),并輸出所有素?cái)?shù)。
程序分析:判斷素?cái)?shù)的方法:用一個(gè)數(shù)分別去除2到sqrt(這個(gè)數(shù)),如果能被整除, 則表明此數(shù)不是素?cái)?shù),反之是素?cái)?shù)。
public class lianxi02 {
public static void main(String[] args) {
int count = 0;
for(int i=101; i<200; i+=2) {
boolean b = false;
for(int j=2; j<=Math.sqrt(i); j++)
{
if(i % j == 0) { b = false; break; }
else { b = true; }
}
if(b == true) {count ++;System.out.println(i );}
}
System.out.println( "素?cái)?shù)個(gè)數(shù)是: " + count);
}
}
【程序3】
題目:打印出所有的 "水仙花數(shù) ",所謂 "水仙花數(shù) "是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如:153是一個(gè) "水仙花數(shù) ",因?yàn)?53=1的三次方+5的三次方+3的三次方。
public class lianxi03 {
public static void main(String[] args) {
int b1, b2, b3;
標(biāo)簽:
java
編程
上傳時(shí)間:
2017-12-24
上傳用戶(hù):Ariza
-
#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<<"正在析構(gòu)中~~~~"<<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<<"請(qǐng)輸入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<<"請(qǐng)輸入b:"<<endl;
for(int j=0;j<size;j++){
cout<<"第"<<j+1<<"個(gè):"<<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<<"計(jì)算U得:"<<endl;
U.Disp();
cout<<"計(jì)算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;
}
標(biāo)簽:
道理特分解法
上傳時(shí)間:
2018-05-20
上傳用戶(hù):Aa123456789