• 0
أحمد أبو عبد البر

نتيجة السؤال الأول من مسابقة الفريق العربي للبرمجة -1

سؤال

بسم الله

 

نتيجة السؤال الأول هي -262

 

وقد تمكن ثلاثة مشتركين من الوصول للحل وهم

 

abdou001   بلغة ++C

 

zetrix       بلغة #C

 

مصطفى 36a2    بلغة JAVA

 

 

ولقد تحصل كل منهم على 300 نقطة ولهم أن يضعوا أكوادهم وإلا اخترنا أحد الأكواد ووضعانه هنا

 

بالتوفيق في السؤال القادم

تم تعديل بواسطه أحمد أبو عبد البر
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

7 إجابة على هذا السؤال .

  • 0

 تم الحل بلغة c++

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحل بلغة ++c

#include <iostream>#include <fstream>#include <windows.h>using namespace std;/////////////////////////////////////////////////void init(int **(&array));void read(int **(&array));int horizontally(int **(&array));int vertically(int **(&array));int diagonally1(int **(&array));int diagonally2(int **(&array));int getMinNum(int **(&array));/////////////////////////////////////////////////int main(){int **array;init(array);read(array);cout << getMinNum(array) << endl;return 0;}/////////////////////////////////////////////////int getMinNum(int **(&array)){int min1( horizontally(array) );int min2( vertically(array)   );int min3( diagonally1(array)  );int min4( diagonally2(array)  );int min;min = min1 < min2 ? min1 : min2;min = min3 < min ? min3 : min;min = min4 < min ? min4 : min;return min;}/////////////////////////////////////////////////void init(int **(&array)){array = new int* [20];for(int i=0;i<20;i++)	array[i] = new int[20];}////////////////////////////////////////////void read(int **(&array)){ifstream file("array.txt",ios::in);if(!file)	{	cerr << "cannot open " 		<< "array.txt \n";	exit(1);	}for(int i=0;i<20;i++)	for(int j=0;j<20;j++)		{		file >> array[i][j];		}}//////////////////////////////////////////////int horizontally( int **(&array)){int min = **array;for(int i=1;i<4;i++)	min -= (*array)[i];		int count; for(int row = 0;row <20;row++)	for(int column = 0 ;column <=16 ;column++)		{		count = array[row][column];		for(int n = column+1; n < column+4 ; n++) 			count -= array[row][n];		if(count < min)			min = count;		}		for(int row = 19 ;row >= 0;row--)	for(int column = 19 ;column >= 3 ;column--)		{		count = array[row][column];		for(int n = column-1; n >= column-3 ; n--)			count -= array[row][n];		if(count < min)			min = count;		}		return min;}////////////////////////////////////////////////////////int vertically(int **(&array)){int min = **array;for(int i=1;i<4;i++)	min -= *array[i];int count; for(int column = 0 ;column <20 ;column++)	for(int row = 0; row <= 16;row++)		{		count = array[row][column];		for(int n = row+1; n < row+4 ; n++)			count -= array[n][column];		if(count < min)			min = count;		}for(int column = 19 ;column >= 0;column--)	for(int row = 19 ;row >= 3 ;row--)		{		count = array[row][column];				for(int n = row-1; n >= row-3 ; n--)			count -= array[n][column];		if(count < min)			min = count;		}		return min;}///////////////////////////////////////////////////////////int diagonally1(int **(&array)){int min = **array;for(int i=1;i<=3;i++)	min -= array[i][i];int count;for(int row =0;row <= 16 ; row++)	for(int column = 0;column<=16;column++)		{		count = array[row][column];			for(int n=1;n <= 3;n++)			count -= array[row+n][column+n];		if(count < min)			min = count;		}for(int row =19;row >=3  ; row--)	for(int column = 19;column >= 3 ;column--)		{		count = array[row][column];				for(int n=1;n <= 3;n++)			count -= array[row-n][column-n];		if(count < min)			min = count;		}				return min;}///////////////////////////////////////////////////////int diagonally2(int **(&array)){int min = (*array)[19];for(int n=1;n<=3;n++)	min -= array[n][19-n];int count;for(int row =0;row <= 16 ; row++)	for(int column = 19;column >= 3;column--)		{		count = array[row][column];			for(int n=1;n <= 3;n++)			count -= array[row+n][column-n];		if(count < min)			min = count;		}for(int row =19;row >=3  ; row--)	for(int column = 0;column <= 16 ;column++)		{		count = array[row][column];				for(int n=1;n <= 3;n++)			count -= array[row-n][column+n];		if(count < min)			min = count;		}		return min;}
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 تم الحل بلغة c++

تم تصحيح الخطأ

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

//------------------------------------------

//Language : C#

//Full Name : Abdelalim ZERKANI

//Result: -262

//------------------------------------------

public int getMinNum(int[,] mat)

{

int min = mat[0,0];

for (int row = 0; row < 20; row++)

for (int col = 0; col < 20; col++)

{

if (col + 3 < 20)

{

int sum = mat[row, col] - mat[row, col + 1] - mat[row, col + 2] - mat[row, col + 3];

if (sum < min)

min = sum;

sum = mat[row, col+3] - mat[row, col + 2] - mat[row, col + 1] - mat[row, col];

if (sum < min)

min = sum;

}

if (row + 3 < 20)

{

//MessageBox.Show("row: "+row+" col: "+col+"\nmat: "+mat.GetLength(0)+"; "+mat.GetLength(1));

int sum = mat[row, col] - mat[row + 1, col] - mat[row + 2, col] - mat[row + 3, col];

if (sum < min)

min = sum;

sum = mat[row + 3, col] - mat[row + 2, col] - mat[row + 1, col] - mat[row, col];

if (sum < min)

min = sum;

}

if (row + 3 < 20 && col + 3 < 20)

{

int sum = mat[row, col] - mat[row + 1, col + 1] - mat[row + 2, col + 2] - mat[row + 3, col + 3];

if (sum < min)

min = sum;

sum = mat[row+3, col+3] - mat[row + 2, col + 2] - mat[row + 1, col + 1] - mat[row, col];

if (sum < min)

min = sum;

}

}

return min;

}

public int[,] LoadMatrixFromFile(string path)

{

string[] file = File.ReadAllLines(path);

int[,] mat = new int[20, 20];

//Foreach line in the text

for (int count = 0; count < file.GetLength(0); count++)

{

//Foreach character in the text

int j = 0;

for (int i = 0; i < file[count].Length; i+=3)

{

string strNbr="";

strNbr += file[count];

strNbr += file[count][i+1];

mat[count, j] = Convert.ToInt32(strNbr);

j++;

}

}

return mat;

}

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الحمد لله :) 

import java.util.Scanner;public class FirstQuestion {	private static int size=20;		public static void main(String[]args){		Scanner s=new Scanner(System.in);		int x[][]=new int[size][size];		for(int i=0;i<size;i++)		{			for(int j=0;j<size;j++)			{				x[i][j]=s.nextInt();			}		}		System.out.println(getMinNum(x));	}	public static int getMinNum(int x[][]){		int min=0;		int subMin=0;		for(int i=0;i<size;i++)		{			for(int j=0;j<size-3;j++)			{				subMin=x[i][j];				for(int k=1;k<4;k++)subMin-=x[i][j+k];				if(subMin<min)					min=subMin;								subMin=x[i][j+3];				for(int k=1;k<4;k++)subMin-=x[i][j+3-k];				if(subMin<min)					min=subMin;			}		}		for(int i=0;i<size-3;i++)		{			for(int j=0;j<size;j++)			{				subMin=x[i][j];				for(int k=1;k<4;k++)subMin-=x[i+k][j];				if(subMin<min)					min=subMin;								subMin=x[i+3][j];				for(int k=1;k<4;k++)subMin-=x[i+3-k][j];				if(subMin<min)					min=subMin;			}		}		for(int i=0;i<size-3;i++)		{			for(int j=0;j<size-3;j++)			{				subMin=x[i][j];				for(int k=1;k<4;k++)subMin-=x[i+k][j+k];				if(subMin<min)					min=subMin;								subMin=x[i+3][j+3];				for(int k=1;k<4;k++)subMin-=x[i+3-k][j+3-k];				if(subMin<min)					min=subMin;			}		}		for(int i=4;i<size;i++)		{			for(int j=0;j<size-3;j++)			{				subMin=x[i][j];				for(int k=1;k<4;k++)subMin-=x[i-k][j+k];				if(subMin<min)					min=subMin;								subMin=x[i-3][j+3];				for(int k=1;k<4;k++)subMin-=x[i-3+k][j+3-k];				if(subMin<min)					min=subMin;			}		}		return min;	}}
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله وبركاته

هذا الكود مكتوب بلغة فيجوال بيسك 6

اعتقد انه قصير بما يكفى

Option ExplicitDim splitarray() As StringDim ar(1 To 400) As IntegerDim u, min, inc, x, j As IntegerDim st, st1 As StringPrivate Sub cmd_split_Click()Dim i As Integersplitarray = Split("08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08 " _& "49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00 " _& "81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65 " _& "52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91 " _& "88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69 " _& "04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66 " _& "22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80 " _& "24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50 " _& "32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70 " _& "67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21 " _& "24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72 " _& "21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95 " _& "78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92 " _& "16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57 " _& "86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58 " _& "19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40 " _& "20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16 " _& "20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54 " _& "04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36 " _& "01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48", " ")min = 0u = 0For i = 0 To UBound(splitarray)        ar(i + 1) = splitarray(i)Next iFor j = 1 To 400    For inc = 1 To 8        x = Choose(inc, -21, -20, -19, 1, 21, 20, 19, -1)       If j + 3 * x > 0 And j + 3 * x <= 400 Then                u = ar(j) - ar(j + x) - ar(j + 2 * x) - ar(j + 3 * x)                If u < min Then                    min = u                    st = ar(j) & "  -  " & ar(j + x) & "  -  " & ar(j + 2 * x) & "  -  " & ar(j + 3 * x)                    st1 = j & "  -  " & j + x & "  -  " & j + 2 * x & "  -  " & j + 3 * x                End If       End If            Next incNext jMsgBox " the smallest Value is               " & min & "       " & vbCrLf & vbCrLf & "the Numbers in Array        " & st & vbCrLf & vbCrLf & "the Numbers orders in Array          " & st1, , "Smallest"End Sub
تم تعديل بواسطه أحمد أبو عبد البر
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

استعمل محرر الأكواد في المرة القادمة

المشار إليه بالرمز <>

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .