Перевести код Pascal на C#

Узнай цену своей работы

Формулировка задачи:

Проблема в том, что при переводе на C# появляется элемент недостижимого кода. Помогите пожалуйста. Вот Pascal
Листинг программы
  1. var
  2. a : array[1..20] of integer;
  3. lab : array[1..20] of boolean;
  4. min,k,n,d : longint;
  5. procedure dfs(w:integer);
  6. var
  7. i,j,d1 : longint;
  8. k1 : array[1..3] of integer;
  9. begin
  10. k1[1]:=w;j:=0;
  11. for i:=1 to n do
  12. if not lab[i] then
  13. inc(j);
  14. if j<3 then
  15. begin
  16. if d<min then min:=d;
  17. exit;
  18. end;
  19. if w=n then
  20. begin
  21. k1[2]:=1;
  22. k1[3]:=2;
  23. end;
  24. if w=n-1 then
  25. begin
  26. k1[2]:=n;
  27. k1[3]:=1;
  28. end
  29. else
  30. begin
  31. k1[2]:=w+1;
  32. k1[3]:=w+2;
  33. end;
  34. if (not lab[k1[1]]) and (not lab[k1[2]]) and (not lab[k1[3]]) then
  35. begin
  36. d1:=0;
  37. for i:=1 to 3 do
  38. lab[k1[i]]:=true;
  39. for i:=1 to n do
  40. if not lab[i] then d1:=d1+a[i];
  41. d:=d+d1;
  42. if w<n then i:=w+1 else i:=1;
  43. while true do
  44. begin
  45. if w=i then
  46. begin
  47. if d<min then min:=d;
  48. exit;
  49. end;
  50. if not lab[i] then dfs(i);
  51. if i<n then inc(i) else i:=1;
  52. end;
  53. d:=d-d1;
  54. for i:=1 to 3 do
  55. lab[k1[i]]:=false;
  56. end;
  57. end;
  58. begin
  59. min:=maxlongint;
  60. readln(n);
  61. for k:=1 to n do read(a[k]);
  62. for k:=1 to n do
  63. begin
  64. d:=0;
  65. fillchar(lab,sizeof(lab),False);
  66. dfs(k);
  67. end;
  68. writeln(min);
  69. end.
Вот C#
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace _1152
  6. {
  7. class Program
  8. {
  9. static bool[] lab = new bool[30];
  10. static int i;
  11. static int min, k, n, d;
  12. static int [] a = new int[30];
  13. static void Main(string[] args)
  14. {
  15. //int [] a = new int[30];
  16. min = 100000000;
  17. n = int.Parse(Console.ReadLine());
  18. for (k = 1; k <= n; k++)
  19. a[k] = int.Parse(Console.ReadLine());
  20. for (k = 0; k < n; k++)
  21. {
  22. d = 0;
  23. //for (i = 1; i <= 21; i++)
  24. // lab[i] = false;
  25. dfs(k);
  26. }
  27. Console.WriteLine(min);
  28. Console.ReadKey();
  29. }
  30. public static void dfs(int w)
  31. {
  32. int i, j, d1;
  33. int [] k1 = new int [3];
  34. k1[0] = w;
  35. j = 0;
  36. for(i = 0; i < n; i++)
  37. if (!lab[i]) j++;
  38. if (j < 3)
  39. {
  40. if (d < min) min=d;
  41. Console.WriteLine(0);
  42. Console.ReadKey();
  43. //Environment.Exit(1);
  44. }
  45. if (w == n)
  46. {
  47. k1[1] = 1;
  48. k1[2] = 2;
  49. }
  50. if (w == n - 1)
  51. {
  52. k1[1] = n;
  53. k1[2] = 1;
  54. }
  55. else
  56. {
  57. k1[1] = w + 1;
  58. k1[2] = w + 2;
  59. }
  60. if ((!lab[k1[0]]) && (!lab[k1[1]]) && (!lab[k1[2]]))
  61. {
  62. d1 = 0;
  63. for(i = 0; i < 3; i++)
  64. lab[k1[i]] = true;
  65. for(i = 0; i < n; i++)
  66. if (!lab[i]) d1 = d1 + a[i];
  67. d = d + d1;
  68. if (w < n) i = w + 1;
  69. else i = 1;
  70. while (true)
  71. {
  72. if (w == i)
  73. {
  74. if (d < min) min = d;
  75. Console.WriteLine(0);
  76. Console.ReadKey();
  77. //Environment.Exit(1);
  78. }
  79. if (!lab[i]) dfs(i);
  80. if (i < n) i++;
  81. else i = 1;
  82. }
  83. d = d - d1; // вот здесь код недостижим
  84. for(i = 0; i < 3; i++)
  85. lab[k1[i]] = false;
  86. }
  87. }
  88. }
  89. }
Пример: Вход 7 3 4 2 2 1 4 1 Выход 9

Решение задачи: «Перевести код Pascal на C#»

textual
Листинг программы
  1. break

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут