地址:

1718. 构建字典序最大的可行序列

状态:未AC

代码:回溯

  1. class Solution {
  2. public:
  3. vector<int> constructDistancedSequence(int n) {
  4. visited.resize(n+1,false);
  5. res.resize(2*(n-1)+1,0);
  6. back_track(0);
  7. return res;
  8. }
  9. vector<int> res;
  10. vector<bool> visited;
  11. bool back_track(int pos) {
  12. int n=visited.size()-1;
  13. if (pos>=res.size()) return true;
  14. if (res[pos]!=0) return back_track(pos+1);
  15. for (int i=n;i>=1;i--) {
  16. if (visited[i]) continue;
  17. if (i==1) {
  18. visited[1]=true;
  19. res[pos] = 1;
  20. if (back_track(pos+1)) return true;
  21. visited[1]=false;
  22. res[pos] = 0;
  23. return false;
  24. }
  25. else {
  26. if (pos+i>=res.size()) continue;
  27. if (res[pos+i]!=0) continue;
  28. res[pos]=i;res[pos+i]=i;
  29. visited[i] = true;
  30. if (back_track(pos+1)) return true;
  31. res[pos]=0;res[pos+i]=0;
  32. visited[i] = false;
  33. }
  34. }
  35. return false;
  36. }
  37. };