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

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

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

Проблема в том, что при переводе на C# появляется элемент недостижимого кода. Помогите пожалуйста. Вот Pascal
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.
Вот C#
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;
            }
        }
        }
    }
Пример: Вход 7 3 4 2 2 1 4 1 Выход 9

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

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

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


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

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

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