PDA

View Full Version : برنامه خانه سازي - جورچين



saber187518
چهارشنبه 08 خرداد 1392, 00:43 صبح
با سلام خدمت دوستان عزيز
دوستان من داشتم يه برنامه مي نوشتم
شديدن توش گير كردم
مي خوام از روش تابع بازگشتي بنويسمش اما نميتونم
هر چقدر فكر ميكنم راه حلش به ذهنم نميرسه
از دوستان كسي ميتونه كمكم كنه
فقط تا فردا وقت دارم
ممنون ميشم
104771
خودم كدهاي زير رو نوشتم كه توي تابع find نميدونم بايد چي بنويسم كه بتونه جواب صحيح رو بهم بده.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace find_location
{
class Program
{
//public static string s;
//public static int m, n, p, r, c, i, j, j1, k;
//public static int cp = 0, counter = 0;
//public static int[, ,] table;
//public static int[,] lenght;
static void Main(string[] args)
{
try
{
using (StreamReader sr = new StreamReader("input.txt"))
{
string s;
int m, n, p, r, c, i, j, j1, k;
int cp = 0, counter = 0;
int[, ,] table;
int[,] lenght;
s = sr.ReadLine();
p = Convert.ToInt32(s[0]) - 48;
m = Convert.ToInt32(s[2]) - 48;
n = Convert.ToInt32(s[4]) - 48;
table=new int[p+1,m,n];
lenght=new int[p+1,2];
for (i = 0; i < p + 1; i++)
{
for (j = 0; j < m; j++)
{
for (k = 0; k < n; k++)
{
table[i, j, k] = 0;
}
}
}
while ((sr.EndOfStream != true)&&(cp<p))
{
s = sr.ReadLine();
Console.WriteLine(s);
r = Convert.ToInt32(s[0]) - 48;
c = Convert.ToInt32(s[2]) - 48;
lenght[cp,0]=r;
lenght[cp,1]=c;
for (i = 0; i < r; i++)
{
s=sr.ReadLine();
Console.WriteLine(s);
for (j = 0,j1=0;j<c;j++, j1+=2)
{
table[cp,i,j]=s[j1];
}
}
cp++;
}
lenght[p, 0] = m;
lenght[p, 1] = n;
counter=0;
for (i = 0; i < p; i++)
for (j = 0; j < lenght[i, 0]; j++)
for (k = 0; k < lenght[i, 1]; k++)
if (table[i, j, k] == 35)
counter++;

using (StreamWriter sw = new StreamWriter("output.txt"))
{
if (counter < lenght[p, 0] * lenght[p, 1])
{
sw.WriteLine("NO");
Console.WriteLine("Terminated Program...");
Console.ReadKey();
return;
}
}
find(table,p,m,n,lenght,m*n);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
Console.WriteLine("End Of Program...");
Console.ReadKey();
}

static void find(int[,,] table,int p,int m,int n,int[,] lenght,int l)
{
int i,j,k;

if (l == 0)
{
using (StreamWriter sw = new StreamWriter("output.txt"))
{
for (i = 0; i < lenght[p, 0]; i++)
sw.WriteLine("{0} {1} {2} {3}", table[p, i, 0], table[p, i, 1], table[p, i, 2], table[p, i, 3]);
}
return;
}

}
}
}