算法實(shí)驗(yàn)4《回溯法

      網(wǎng)友投稿 755 2022-05-29

      1. 編寫一個(gè)簡(jiǎn)單的程序,解決8皇后問(wèn)題。

      #include

      using namespace std;

      bool backtrack(int list[8], int t)

      {

      if (t >= 8)return true;

      for (int i = 0; i < 8; i++)

      {

      list[t] = i;

      bool place = true;

      for (int j = 0; j < t; j++)if (list[j] == i || j-t==list[j]-i || j-t==i-list[j])place = false;

      if (place && backtrack(list, t+1))return true;

      continue;

      }

      return false;

      }

      int main()

      {

      int list[8];

      for (int i = 0; i < 8; i++)list[i] = 0;

      backtrack(list, 0);

      for (int i = 0; i < 8; i++)cout << list[i] << " ";

      system("pause>nul");

      return 0;

      }

      1)作業(yè)數(shù) 2)每個(gè)作業(yè)完成時(shí)間表:

      作業(yè)完成時(shí)間

      機(jī)器1

      機(jī)器2

      作業(yè)1

      2

      1

      作業(yè)2

      3

      1

      作業(yè)3

      2

      3

      要求輸出: 1)最佳完成時(shí)間 2)最佳調(diào)度方案

      提示:算法復(fù)雜度為O(n!),建議在測(cè)試的時(shí)候n值不要太大,可以考慮不要超過(guò)12。

      #include

      using namespace std;

      void backtrack(int *t1, int *t2, int *list1, int *list2, int *list, int &sumTime, int &time, int t, int n)

      {

      if (t >= n)

      {

      if (sumTime > time)sumTime = time;

      return;

      }

      for (int i = 0; i < n; i++) //選擇1個(gè)作業(yè)

      {

      bool place = true;

      for (int j = 0; j < t; j++)if (list[j] == i)place = false; //判斷這個(gè)作業(yè)是否可選

      if (!place)continue;

      list[t] = i;

      if (t)t1[t] = t1[t - 1];

      else t1[t] = 0;

      t1[t] += list1[i];

      if (t)t2[t] = (t1[t]>t2[t - 1]) ? t1[t] : t2[t - 1]; //這3行計(jì)算t2[i]

      else t2[t] = t1[t];

      t2[t] += list2[i];

      time += t2[t];

      if (time <= sumTime)backtrack(t1, t2, list1, list2, list, sumTime, time, t + 1, n);

      time -= t2[t];

      }

      }

      int main()

      {

      int n;

      cin >> n;

      int *list1 = new int[n]; //作業(yè)在機(jī)器1上運(yùn)行的時(shí)間t11-t1n

      int *list2 = new int[n]; //作業(yè)在機(jī)器2上運(yùn)行的時(shí)間t21-t2n

      int *t1 = new int[n]; //作業(yè)在機(jī)器1上完成的時(shí)間F11-F1n

      int *t2 = new int[n]; //作業(yè)在機(jī)器2上完成的時(shí)間F21-F2n

      int sumTime = 0; //總時(shí)間上界

      for (int i = 0; i < n; i++)

      {

      cin >> list1[i] >> list2[i];

      算法實(shí)驗(yàn)4《回溯法》

      sumTime += (list1[i] + list2[i])*(i + 1);

      }

      int *list = new int[n]; //記錄作業(yè)運(yùn)行的順序

      int time = 0; //總時(shí)間

      backtrack(t1, t2, list1, list2, list, sumTime, time, 0, n);

      cout << sumTime << endl;

      system("pause>nul");

      return 0;

      }

      3. 數(shù)字全排列問(wèn)題

      任意給出從1到N的N個(gè)連續(xù)的自然數(shù),求出這N個(gè)自然數(shù)的各種全排列。如N=3時(shí),共有以下6種排列方式:123,132,213,231,312,321。

      注意:數(shù)字不能重復(fù),N由鍵盤輸入(N<=9)。

      #include

      using namespace std;

      void backtrack(int n,int t,int *list)

      {

      if (t >= n)

      {

      for (int i = 0; i < n; i++)cout << list[i]+1 << " ";

      cout << endl;

      }

      for (int i = 0; i < n; i++)

      {

      bool flag = true;

      for (int j = 0; j < t; j++)if (list[j] == i)flag = false;

      if (flag)

      {

      list[t] = i;

      backtrack(n, t + 1, list);

      }

      }

      }

      int main()

      {

      int n;

      cin >> n;

      int list[9];

      backtrack(n, 0, list);

      system("pause>nul");

      return 0;

      }

      MapReduce

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:MongoDB基礎(chǔ)【常用命令】入門
      下一篇:多線程異步日志系統(tǒng),高效、強(qiáng)悍的實(shí)現(xiàn)方式-雙緩沖
      相關(guān)文章
      亚洲人成在线播放| 亚洲欧洲第一a在线观看| 亚洲人成电影在线天堂 | 亚洲毛片不卡av在线播放一区| 亚洲乱色熟女一区二区三区蜜臀| 亚洲国产成人精品电影| 亚洲成年人电影网站| 亚洲制服丝袜在线播放| 亚洲国产av一区二区三区丶| 亚洲系列中文字幕| 亚洲性猛交xx乱| 亚洲最大的黄色网| 国产亚洲精品成人AA片| 亚洲国产精品成人综合久久久| 亚洲va在线va天堂va手机| 亚洲另类小说图片| 国产午夜亚洲精品| 亚洲国产高清国产拍精品| 在线观看亚洲精品专区| 亚洲熟妇少妇任你躁在线观看无码| 丰满亚洲大尺度无码无码专线| 亚洲Aⅴ无码一区二区二三区软件| 国产亚洲精品国产福利在线观看| 亚洲av无码一区二区三区人妖 | 中文字幕精品亚洲无线码二区| 最新精品亚洲成a人在线观看| 中文字幕亚洲日本岛国片| 亚洲人成网7777777国产| 亚洲精品乱码久久久久久久久久久久 | 亚洲精品国产精品乱码不卞| 国产亚洲精品线观看动态图| 精品亚洲综合久久中文字幕| 亚洲视频免费在线观看| 亚洲制服丝袜一区二区三区| 亚洲国产精品嫩草影院| 亚洲一区日韩高清中文字幕亚洲 | 亚洲精品天堂在线观看| 老司机亚洲精品影院在线观看| 亚洲一区视频在线播放| 久久久亚洲精品国产| 亚洲人成777在线播放|