官术网_书友最值得收藏!

1.2 強化習(xí)題詳解

【基礎(chǔ)知識題】

1簡述下列術(shù)語:數(shù)據(jù)、數(shù)據(jù)元素、數(shù)據(jù)對象、數(shù)據(jù)結(jié)構(gòu)、存儲結(jié)構(gòu)、數(shù)據(jù)類型和抽象數(shù)據(jù)類型。

答:(1)數(shù)據(jù)是對客觀事物的符號表示,在計算機科學(xué)中是指所有能輸入到計算機中并能被計算機程序處理的符號的總稱。

(2)數(shù)據(jù)元素是數(shù)據(jù)的基本單位。

(3)數(shù)據(jù)對象是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的一個子集。

(4)數(shù)據(jù)結(jié)構(gòu)是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。

(5)存儲結(jié)構(gòu)是數(shù)據(jù)結(jié)構(gòu)在計算機中的表示(又稱映象或數(shù)據(jù)的物理結(jié)構(gòu))。

(6)數(shù)據(jù)類型是一個值的集合和定義在這個值集上的一組操作的總稱。

(7)抽象數(shù)據(jù)類型是指一個數(shù)學(xué)模型以及定義在該模型上的一組操作。

2試描述數(shù)據(jù)結(jié)構(gòu)和抽象數(shù)據(jù)類型的概念與程序設(shè)計語言中數(shù)據(jù)類型概念的區(qū)別。

答:數(shù)據(jù)結(jié)構(gòu):相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合;

抽象數(shù)據(jù)類型:一個數(shù)學(xué)模型以及在該模型上的一組操作。

區(qū)別:

抽象數(shù)據(jù)類型的定義僅取決于它的一組邏輯特性,而與其在計算機內(nèi)部如何表示和實現(xiàn)無關(guān)。

抽象數(shù)據(jù)類型包含一般數(shù)據(jù)類型的概念,但含義比一般數(shù)據(jù)類型的范疇更廣。

抽象數(shù)據(jù)類型可通過程序設(shè)計語言中的數(shù)據(jù)類型來表示和實現(xiàn)。

3設(shè)有數(shù)據(jù)結(jié)構(gòu)(D,R),其中D={d1,d2,d3,d4},R={r},r={(d1,d2),(d2,d3),(d3,d4)},試按圖論中圖的畫法慣例畫出其邏輯結(jié)構(gòu)圖。

答:邏輯結(jié)構(gòu)圖如圖1-2所示。

圖1-2 程序邏輯結(jié)構(gòu)圖

4試仿照三元組的抽象數(shù)據(jù)類型分別寫出抽象數(shù)據(jù)類型復(fù)數(shù)和有理數(shù)的定義(有理數(shù)是其分子、分母均為自然數(shù)且分母不為零的分?jǐn)?shù))。

答:

ADT Complex{
  數(shù)據(jù)對象:D={r,i|r,i為實數(shù)}
  數(shù)據(jù)關(guān)系:R={<r,i>}
  基本操作:
    InitComplex(&C,re,im)
      操作結(jié)果:構(gòu)造一個復(fù)數(shù)C,其實部和虛部分別為re和im
    DestroyCmoplex(&C)
      操作結(jié)果:銷毀復(fù)數(shù)C
    Get(C,k,&e)
      操作結(jié)果:用e返回復(fù)數(shù)C的第k元的值
    Put(&C,k,e)
      操作結(jié)果:改變復(fù)數(shù)C的第k元的值為e
    IsAscending(C)
      操作結(jié)果:如果復(fù)數(shù)C的兩個元素按升序排列,則返回1,否則返回0
    IsDescending(C)
      操作結(jié)果:如果復(fù)數(shù)C的兩個元素按降序排列,則返回1,否則返回0
    Max(C,&e)
      操作結(jié)果:用e返回復(fù)數(shù)C的兩個元素中值較大的一個
    Min(C,&e)
      操作結(jié)果:用e返回復(fù)數(shù)C的兩個元素中值較小的一個
}ADT Complex
 
ADT RationalNumber{
  數(shù)據(jù)對象:D={s,m|s,m為自然數(shù),且m不為0}
  數(shù)據(jù)關(guān)系:R={<s,m>}
  基本操作:
    InitRationalNumber(&R,s,m)
      操作結(jié)果:構(gòu)造一個有理數(shù)R,其分子和分母分別為s和m
    DestroyRationalNumber(&R)
      操作結(jié)果:銷毀有理數(shù)R
    Get(R,k,&e)
      操作結(jié)果:用e返回有理數(shù)R的第k元的值
    Put(&R,k,e)
      操作結(jié)果:改變有理數(shù)R的第k元的值為e
    IsAscending(R)
      操作結(jié)果:若有理數(shù)R的兩個元素按升序排列,則返回1,否則返回0
    IsDescending(R)
      操作結(jié)果:若有理數(shù)R的兩個元素按降序排列,則返回1,否則返回0
    Max(R,&e)
      操作結(jié)果:用e返回有理數(shù)R的兩個元素中值較大的一個
    Min(R,&e)
      操作結(jié)果:用e返回有理數(shù)R的兩個元素中值較小的一個
}ADT RationalNumber

【注意】考研中很少出現(xiàn)直接書寫ADT的題目,但是會要求設(shè)計一個數(shù)據(jù)結(jié)構(gòu),無非就是對ADT的設(shè)計與完善過程。

5試畫出與下列程序段等價的框圖。

(1)

product=1;
i=1;
while(i<=n)
{
  product*=i;
  i++;
}

(2)

i=0;
do
{
  i++;
}while((i!=n)&&(a[i]!=x));

(3)

switch
{
  case x<y:
    z=y-x;
    break;
  case x==y:
    z=abs(x*y);
    break;
  default:
    z=(x-y)/abs(x)*abs(y); //abs()為取絕對值函數(shù)
}

答:以上程序段等價框圖分別如圖1-3,圖1-4和圖1-5所示。

(1)

圖1-3 等價框圖(1)

(2)

圖1-4 等價框圖(2)

(3)

圖1-5 等價框圖(3)

6在程序設(shè)計中,常用下列三種不同的出錯處理方式:

(1)用exit語句終止執(zhí)行并報告錯誤;

(2)以函數(shù)的返回值區(qū)別正確返回或錯誤返回;

(3)設(shè)置一個整型變量的函數(shù)參數(shù)以區(qū)別正確返回或某種錯誤返回。

試討論這三種方法各自的優(yōu)缺點。

答:(1)優(yōu)點:exit用于異常錯誤處理,可以強行中斷程序的執(zhí)行,并返回至操作系統(tǒng),操作系統(tǒng)會自動回收資源。

缺點:退出地點太多不利于調(diào)試。

(2)優(yōu)點:以函數(shù)的返回值區(qū)別正確返回或錯誤返回,常用于子程序的測試,便于實現(xiàn)程序的局部控制,不會直接終止程序的運行。

缺點:判斷太多,必須人工維護一份錯誤值列表。

(3)優(yōu)點:用整型函數(shù)進行錯誤處理可以給出錯誤類型,便于迅速確定錯誤。

缺點:需要完整的整型變量的釋義,才能方便理解。

7在程序設(shè)計中,可采用下列三種方法實現(xiàn)輸出和輸入:

(1)通過scanf和printf語句;

(2)通過函數(shù)的參數(shù)顯式傳遞;

(3)通過全局變量隱式傳遞。

試討論這三種方法的優(yōu)缺點。

答:(1)用scanf和printf直接進行輸入輸出

優(yōu)點:形象、直觀。

缺點:需要格式控制,較為煩瑣,如果出現(xiàn)錯誤,則會引起整個系統(tǒng)的崩潰,參數(shù)類型受限制,內(nèi)存開銷大。

(2)通過函數(shù)的參數(shù)顯式傳遞進行輸入輸出

優(yōu)點:便于實現(xiàn)信息的隱蔽,減少出錯的可能。

缺點:參數(shù)說明比較煩瑣,內(nèi)存開銷大。

(3)通過全局變量的隱式傳遞進行輸入輸出

優(yōu)點:方便,只需修改變量的值即可,內(nèi)存開銷小;

缺點:過多的全局變量使程序的維護較為困難,內(nèi)容極易丟失。

8設(shè)n為正整數(shù)。試確定下列各程序段中前置以記號@的語句的頻度:

(1)

i=1;
k=0;
while(i <= n-1)
{
@ k+=10*i;
    i++;
}

(2)

i=1;
k=0;
do
{
@ k+=10*i;
    i++;
} while(i<=n-1);

(3)

i=1;
k=0;
while (i<=n-1)
{
    i++;
@ k+=10*i;
}

(4)

k=0;
for (i=1;i<=n;i++)
{
    for(j=i;j<=n;j++)
@ k++;
}

(5)

for(i=1;i<=n;i++)
{
  for(j=1;j<=i;j++)
    for(k=1;k<=j;k++)
@ x+=delta;
}

(6)

i=1;
j=0;
while(i+j<=n)
{
@ if(i>j)
      j++;
    else
      i++;
}

(7)

x=n; //n是不小于1的常數(shù)
y=0;
while(x>=(y+1)*(y+1))
{
@ y++;
}

(8)

x=91;
y=100;
while(y>0)
{
@ if(x>100)
    {
      x-=10;
      y--;
    }else
      x++;
}

答:(1)n-1

(2)n-1

(3)n-1

(4)

(5)

(6)n

(7)

(8)1100

9假設(shè)n為2的乘冪,并且n>2,試求下列算法的時間復(fù)雜度及變量count的值(以n的函數(shù)形式表示)。

int Time(int n)
{
  count=0;
  x=2;
  while(x<n/2)
  {
    x*=2;
    count++;
  }
  return count;
}

答:因為循環(huán)執(zhí)行條件是x<n/2,則循環(huán)語句x*=2;count++;的執(zhí)行頻度是O(log2n)。count++共執(zhí)行了log2n-2次,所以count=log2n-2。

10按增長率由小至大的順序排列下列各函數(shù):2100,(3/2)n,(2/3)n,(4/3)n,nn,n3/2,n2/3,n!,n,log2n,n/logn2,,log2(log2n),nlog2n,(常見函數(shù)的增長率示意圖如圖1-6)。

圖1-6 常見函數(shù)的增長率示意圖

答:常見時間復(fù)雜度按照數(shù)量級遞增排列為:

O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(nk)<O(2n

此處參考常見的次序以及圖像得出次序排列為:

(2/3)n<2100<log2(log2n)<log2n<<n2/3<n/logn2<n<nlog2n<n3/2<(4/3)n<(3/2)n<n!<nn

11已知有實現(xiàn)同一功能的兩個算法,其時間復(fù)雜度分別為O(2n)和O(n10),假設(shè)現(xiàn)實中計算機可連續(xù)運算的時間為107秒(100多天),每秒可執(zhí)行基本操作(根據(jù)這些操作來估算算法時間復(fù)雜度)105次。試問在此條件下,這兩個算法可解問題的規(guī)模(即n值的范圍)各為多少?哪個算法更適宜?請說明理由。

答:107*105=1012

2n=1012,n=40

n10=1012,n=16

第一種算法更合適,因為對于同樣的循環(huán)次數(shù)n,第二種算法所花費的代價比較大。

12設(shè)有以下三個函數(shù):f(n)=21n4+n2+1000,g(n)=15n4+500n3,h(n)=500n3.5+nlogn。請判斷以下斷言正確與否:

(1)f(n)是O(g(n))

(2)h(n)是O(f(n))

(3)g(n)是O(h(n))

(4)h(n)是O(n3.5

(5)h(n)是O(nlogn)

答:由分析可知,O(f(n))=O(g(n))=O(n4);O(h(n))=O(n3.5)。故:

(1)對

(2)錯

(3)錯

(4)對

(5)錯

【注意】O表示的是漸進時間復(fù)雜度,計算出結(jié)果后只需取其規(guī)模的階數(shù)來做比較。

13試設(shè)定若干n值,比較兩函數(shù)n2和50nlog2n的增長趨勢,并確定n在什么范圍內(nèi),函數(shù)n2的值大于50nlog2n的值。

答:(1)n2的增長趨勢快,但在n較小的時候,50nlog2n的值較大。

(2)令n2=50nlog2n,解得n≈450,故當(dāng)n>450時,n2>50nlog2n。

14判斷下列各對函數(shù)f(n)和g(n),當(dāng)n→∞時,哪個函數(shù)增長更快?

(1),g(n)=2n4+n+7

(2)f(n)=(ln(n!)+5)2,g(n)=13n2.5

(3)

(4)

答:(1)g(n)更快

(2)g(n)更快

(3)f(n)更快

(4)f(n)更快

【注意】該題需要找到主要影響函數(shù)增長的部分,例如(1)相當(dāng)于比較n2和n4的增長速度。

15試用數(shù)學(xué)歸納法證明:

(1)

(2)

(3)

(4)

答:(1)證明:

n=1時,1=1×(1+1)×(2×1+1)/6=1,等式成立;

n=2時,1+4=2×(2+1)×(2×2+1)/6=5,等式成立;

設(shè)n=k(k>=0)時,公式成立,即1+4+9+…+k2=k(k+1)(2k+1)/6。

則當(dāng)n=k+1時,1+4+9+…+k2+(k+1)2=k(k+1)(2k+1)/6+(k+1)2=(k+1)×[2×(k2)+k+6(k+1)]/6=(k+1)×[2×(k2)+7k+6]/6=(k+1)×(2k+3)×(k+2)/6=(k+1)×[(k+1)+1]×[2(k+1)+1]/6也滿足公式。

綜上所述,

成立,得證。

(2)證明:

n=0時,x0=1,(x-1)/(x-1)=1,等式成立;

n=1時,1+x=(x2-1)/(x-1)=1+x,等式成立;

設(shè)n=k(k>=0)時等式成立,即x0+x1+x2+…+xk=(xk1-1)/(x-1)

則當(dāng)n=k+1時,x0+x1+x2+…+xk+xk1=(xk1-1)/(x-1)+xk1=[(xk1-1)+xk1(x-1)]/(x-1)=[(xk1-1)+xk2-xk1]/(x-1)=(xk2-1)/(x-1)也滿足公式。

綜上所述

成立,得證。

(3)證明:

n=1時,211=21-1=1,等式成立;

n=2時,20+21=22-1,等式成立;

設(shè)n=k(k>=1)時等式成立,即20+21+…+2k1=2k-1

則當(dāng)n=k+1時,20+21+…+2k1+2k=2k-1+2k=2×2k-1=2k1-1也滿足公式。

綜上所述

成立,得證。

(4)證明:

n=1時,2×1-1=12=1,等式成立;

n=2時,(2×1-1)+(2×2-1)=4=22,等式成立;

設(shè)n=k(k>=1)時等式成立,即(2×1-1)+(2×2-1)+…+(2×k-1)=k2

則當(dāng)n=k+1時,(2×1-1)+(2×2-1)+…+(2×k-1)+[2×(k+1)-1]=k2+[2×(k+1)-1]=k2+2k+1=(k+1)2也滿足公式。

綜上所述

成立,得證。

【注意】數(shù)學(xué)歸納法基本步驟:

由題設(shè)證明n=1等特殊情況成立;

設(shè)n=k時成立;

證明n=k+1時成立。

【算法設(shè)計題】

16試寫一算法,自大至小依次輸出順序讀入的三個整數(shù)X,Y和Z的值。

答:假設(shè)我們?nèi)砸繶、Y和Z的次序輸入這三個整數(shù),則此題的目標(biāo)是做到X≥Y≥Z。在算法中應(yīng)考慮對這3個元素做盡可能的比較和移動,如下述算法在最壞的情況下只需進行3次比較和7次移動。

void print_descending(int X,int Y,int Z) //按從大到小順序輸出三個整數(shù)
{
  scanf("%d",&X);
  scanf("%d",&Y);
  scanf("%d",&Z);
  if(X<Y)
    Exchange(X,Y);
  if(X<Z)
    Exchange(X,Z);
  if(Y<Z)
    Exchange(Y,Z);
  printf("%d",X);
  printf("%d",Y);
  printf("%d",Z);
} //print_descending
 
void Exchange(int x,int y)
{
  int temp;
  temp=x;
  x=y;
  y=temp;
}

17已知k階斐波那契序列的定義為

f0=0,f1=0,…,fk2=0,fk1=1

fn=fn1+fn2+…+fnk,n=k,k+1,…

試編寫求k階斐波那契序列的第m項值的函數(shù)算法,k和m均以值調(diào)用的形式在函數(shù)參數(shù)表中出現(xiàn)。

答:

Status fib(int k,int m,int &f) //求k階斐波那契序列的第m項的值f
{
  int a[100];
  if(k<2||m<0)
    return FALSE;
  if(m<k-1)
    f=0;
  else if (m==k-1)
    f=1;
  else
  {
    for(i=0;i<=k-2;i++)
      a[i]=0;
    a[k-1]=1; //初始化
    for(i=k;i<=m;i++) //求出序列第k至第m個元素的值
    {
       sum=0;
       for(j=i-k;j<i;j++)
         sum+=a[j];
       a[i]=sum;
    }
    f=a[m];
  }
    return OK;
}

分析:k階斐波那契序列的第m項的值

f[m]=f[m-1]+f[m-2]+…+f[m-k]=f[m-1]+f[m-2]+…+f[m-k]+f[m-k-1]-f[m-k-1]=2×f[m-1]-f[m-k-1]

所以上述算法的時間復(fù)雜度僅為O(m)。如果采用遞歸設(shè)計,將達(dá)到O(km)。即使采用暫存中間結(jié)果的方法,也將達(dá)到O(m2)。

18假設(shè)有A,B,C,D,E五個高等院校進行田徑對抗賽,各院校的單項成績均已存入計算機,并構(gòu)成一張表,表中每一行的形式為

編寫算法,處理上述表格,以統(tǒng)計各院校的男、女總分和團體總分,并輸出。

答:

typedef enum{A,B,C,D,E} SchoolName;
typedef enum{Female,Male} SexType;
typedef struct
{
  char event[3]; //項目
  SexType sex;
  SchoolName school;
  int score;
}Component;
typedef struct
{
  int MaleSum; //男團總分
  int FemaleSum; //女團總分
  int TotalSum; //團體總分
}Sum;
Component report[n];
Sum result[5];
//算法過程體中主要結(jié)構(gòu):
for(i=0;i<n;i++)
{
  //對result[report[i].school]進行處理;
}
for(s=A;s<=E;s++)
printf(……);

例如:

typedef enum{A,B,C,D,E} SchoolName;
typedef enum{Female,Male} SexType;
typedef struct
{
  char event[3]; //項目
  SexType sex;
  SchoolName school;
  int score;
}Component;
typedef struct
{
  int MaleSum; //男團總分
  int FemaleSum; //女團總分
  int TotalSum; //團體總分
}Sum;
Sum SumScore(SchoolName sn,Component a[],int n)
{
  Sum temp;
  temp.MaleSum=0;
  temp.FemaleSum=0;
  temp.TotalSum=0;
  int i;
  for(i=0;i<n;i++)
  {
    if(a[i].school==sn)
    {
      if(a[i].sex==Male)
        temp.MaleSum+=a[i].score;
      if(a[i].sex==Female)
        temp.FemaleSum+=a[i].score;
    }
  }
  temp.TotalSum=temp.MaleSum+temp.FemaleSum;
  return temp;
}

19試編寫算法,計算i!*2i(i=0,1,…,n-1)的值并存入數(shù)組a[arrsize]的各個分量中。假設(shè)計算機中允許的整數(shù)最大值為MAXINT,則當(dāng)n>arrsize或?qū)δ硞€k(1≤k≤n),使k!*2k>MAXINT時,應(yīng)按出錯處理。注意選擇你認(rèn)為較好的出錯處理方法。

答:注意MAXINT為計算機中允許出現(xiàn)的最大值,則在過程體中不能以計算機所得結(jié)果大于MAXINT作為判斷出錯的依據(jù)。

#include<stdio.h>
#define MAXINT 65535
#define ArrSize 100
int main()
{
  int i,k;
  int a[ArrSize];
  printf("Enter k: ");
  scanf("%d",&k);
  if(k>ArrSize-1)
    exit(0); //選用exit()作為出錯處理方法
  for(i=0;i<=k;i++)
  {
    if(i==0)
      a[i]=1;
    else
    {
      if(2*i*a[i-1]>MAXINT)
        exit(0); //選用exit()作為出錯處理方法
      else
        a[i]=2*i*a[i-1];
    }
  }
  for(i=0;i<=k;i++)
  {
    if(a[i]>MAXINT)
      exit(0); //選用exit()作為出錯處理方法
    else
      printf("%d\n",a[i]);
  }
  return 0;
}

20試編寫算法求一元多項式的值的值Pn(x0),并確定算法中每一語句的執(zhí)行次數(shù)和整個算法的時間復(fù)雜度。注意選擇你認(rèn)為較好的輸入和輸出方法。本題的輸入為ai(i=0,1,…,n),x0和n,輸出為Pn(x0)。

答:注意計算過程中不要對多項式中的每一項獨立計算x的冪。

#include<stdio.h>
#define N 10
double polynomail(int a[],int i,double x,int n);
int main()
{
  double x;
  int n,i;
  int a[N];
  printf("Input the value of x:");
  scanf("%d",&x);
  printf("Input number of terms:");
  scanf("%d",&n);
  if(n>N-1)
    exit(0);
  printf("輸入多項式的系數(shù)a[0]—a[n]:"); //在此之上所有語句僅執(zhí)行一次
  for(i=0;i<=n;i++)
    scanf("%d",&a[i]); //執(zhí)行n+1次
  printf("The polynomail value is:%d\n",polynomail(a,n,x,n)); //執(zhí)行一次
  return 0;
}
double polynomail(int a[],int i,double x,int n)
{
  if(i>0)
    return a[n-i]+polynomail(a,i-1,x,n)*x; //遞歸函數(shù),polynomail函數(shù)執(zhí)行n+1次
  else
    return a[n];
}

本算法的時間復(fù)雜度為O(n)。

 

推薦閱讀
  1. 曾五一《統(tǒng)計學(xué)概論》配套題庫【名校考研真題+課后習(xí)題+章節(jié)題庫+模擬試題】
  2. 高鴻賓《有機化學(xué)》(第4版)筆記和課后習(xí)題(含考研真題)詳解
  3. 2020年中國近現(xiàn)代史考研題庫【名校考研真題+章節(jié)題庫+模擬試題】
  4. 伍勝健《數(shù)學(xué)分析》(第2冊)配套題庫【名校考研真題+章節(jié)題庫+模擬試題】
  5. 浦興祖《當(dāng)代中國政治制度》配套題庫【名校考研真題+專項題庫+模擬試題】
  6. 陳衛(wèi)東《刑事訴訟法》(第3版)筆記和課后習(xí)題(含考研真題)詳解
  7. 趙相林《國際私法》(第3版)【教材精講+考研真題解析】講義與視頻課程【37小時高清視頻】
  8. 曼昆《經(jīng)濟學(xué)原理(宏觀經(jīng)濟學(xué)分冊)》配套題庫【課后習(xí)題+章節(jié)題庫(含名校考研真題)+模擬試題】
  9. 馮達(dá)文《新編中國哲學(xué)史(下冊)》筆記和典型題(含考研真題)詳解
  10. 十二校聯(lián)合《教育學(xué)基礎(chǔ)》(第3版)筆記和課后習(xí)題(含考研真題)詳解
  11. 孟道驥《高等代數(shù)與解析幾何》(第3版)(上冊)筆記和課后習(xí)題(含考研真題)詳解
  12. 陳力《醫(yī)學(xué)心理學(xué)》筆記和習(xí)題(含考研真題)詳解
  13. 姚長輝《貨幣銀行學(xué)》(第3版)配套題庫【名校考研真題(視頻講解)+課后習(xí)題+章節(jié)題庫+模擬試題】
  14. 羅森《財政學(xué)》筆記和課后習(xí)題(含考研真題)詳解(第8版)
  15. 張樹義《行政法與行政訴訟法學(xué)》筆記和考研真題詳解
主站蜘蛛池模板: 兴安县| 兰坪| 五指山市| 阿坝县| 泗阳县| 渝中区| 南和县| 南安市| 定陶县| 岫岩| 崇礼县| 五河县| 横峰县| 海宁市| 肥西县| 石楼县| 伽师县| 翼城县| 含山县| 和林格尔县| 阳山县| 松桃| 甘德县| 乃东县| 竹溪县| 临江市| 博客| 东兰县| 平和县| 东城区| 平昌县| 普兰店市| 拉孜县| 林西县| 永新县| 辽源市| 嘉峪关市| 泾源县| 定远县| 保靖县| 哈巴河县|