Перевести код Pascal на C#
Формулировка задачи:
Проблема в том, что при переводе на C# появляется элемент недостижимого кода. Помогите пожалуйста.
Вот Pascal
Вот C#
Пример:
Вход
7
3 4 2 2 1 4 1
Выход
9
var a : array[1..20] of integer; lab : array[1..20] of boolean; min,k,n,d : longint; procedure dfs(w:integer); var i,j,d1 : longint; k1 : array[1..3] of integer; begin k1[1]:=w;j:=0; for i:=1 to n do if not lab[i] then inc(j); if j<3 then begin if d<min then min:=d; exit; end; if w=n then begin k1[2]:=1; k1[3]:=2; end; if w=n-1 then begin k1[2]:=n; k1[3]:=1; end else begin k1[2]:=w+1; k1[3]:=w+2; end; if (not lab[k1[1]]) and (not lab[k1[2]]) and (not lab[k1[3]]) then begin d1:=0; for i:=1 to 3 do lab[k1[i]]:=true; for i:=1 to n do if not lab[i] then d1:=d1+a[i]; d:=d+d1; if w<n then i:=w+1 else i:=1; while true do begin if w=i then begin if d<min then min:=d; exit; end; if not lab[i] then dfs(i); if i<n then inc(i) else i:=1; end; d:=d-d1; for i:=1 to 3 do lab[k1[i]]:=false; end; end; begin min:=maxlongint; readln(n); for k:=1 to n do read(a[k]); for k:=1 to n do begin d:=0; fillchar(lab,sizeof(lab),False); dfs(k); end; writeln(min); end.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _1152 { class Program { static bool[] lab = new bool[30]; static int i; static int min, k, n, d; static int [] a = new int[30]; static void Main(string[] args) { //int [] a = new int[30]; min = 100000000; n = int.Parse(Console.ReadLine()); for (k = 1; k <= n; k++) a[k] = int.Parse(Console.ReadLine()); for (k = 0; k < n; k++) { d = 0; //for (i = 1; i <= 21; i++) // lab[i] = false; dfs(k); } Console.WriteLine(min); Console.ReadKey(); } public static void dfs(int w) { int i, j, d1; int [] k1 = new int [3]; k1[0] = w; j = 0; for(i = 0; i < n; i++) if (!lab[i]) j++; if (j < 3) { if (d < min) min=d; Console.WriteLine(0); Console.ReadKey(); //Environment.Exit(1); } if (w == n) { k1[1] = 1; k1[2] = 2; } if (w == n - 1) { k1[1] = n; k1[2] = 1; } else { k1[1] = w + 1; k1[2] = w + 2; } if ((!lab[k1[0]]) && (!lab[k1[1]]) && (!lab[k1[2]])) { d1 = 0; for(i = 0; i < 3; i++) lab[k1[i]] = true; for(i = 0; i < n; i++) if (!lab[i]) d1 = d1 + a[i]; d = d + d1; if (w < n) i = w + 1; else i = 1; while (true) { if (w == i) { if (d < min) min = d; Console.WriteLine(0); Console.ReadKey(); //Environment.Exit(1); } if (!lab[i]) dfs(i); if (i < n) i++; else i = 1; } d = d - d1; // вот здесь код недостижим for(i = 0; i < 3; i++) lab[k1[i]] = false; } } } }
Решение задачи: «Перевести код Pascal на C#»
textual
Листинг программы
break
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д