امروز : جمعه Jan 09, 2009 5:19 am
ديدن موضوع قبلي | ديدن موضوع بعدي
 |
صفحه 1 از 2
|
| نويسنده |
پيغام |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 طراحی الگوریتم
فعلا دو تا کتاب داشته باشین:
http://www.aachp.ir/downloads/algorithms.pdf
این یکی زبونش سادس, کتاب خوبی هم است:
http://online-judge.uva.es/problemset/Art_of_Programming_Contest_SE_for_uva.pdf
حتما دانلود کنید چون باهاشون کار داریم
منبع:www.aachp.ir
اين نامه توسط ملایی در شنبه Oct 13, 2007 9:31 pm ويرايش شده است.
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 23 Feb 2007 02:27 am |
|
 |
|
|
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
این کدی که نوشتم در مورد الگوریتم هافمنه : Huffman
چیز جالبی شد  , می زارم اینجا تا بقیه هم استفاده کنن:
code:#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#include <string>
#include <cmath>
using namespace std;
struct node{
int tekrar;
string harf;
node *l;
node *r;
node (){
l=r=NULL;
harf="";
}
};
vector < node* > v,v2;
void sort1(){//sorting on tekrar :D
for (size_t i=0 ;i < v.size()-1;++i)
for (size_t j=i+1 ; j < v.size() ; ++j )
if ( v[i]->tekrar > v[j]->tekrar )
swap ( v[i] , v[j] );
}
void sort2(){// sorting on harf
for (size_t i=0 ;i < v2.size()-1;++i)
for (size_t j=i+1 ; j < v2.size() ; ++j )
if ( v2[i]->harf[0] > v2[j]->harf[0] )
swap ( v2[i] , v2[j] );
}
void peymayesh(node *p){
static string s="";
static int i=0;
p->harf += s;
if (p->l){
s+="0";
peymayesh(p->l);
}
if (p->r){
s+="1";
peymayesh(p->r);
}
if (! s.empty() )
s.erase(s.begin() + s.size() -1);
else
i=0;//for next use !! means next test case
if (p->harf[0]>=97)
v2[i++]=p;
}
int main (){
ifstream in("Huffman.in");
int t,n;
for (in >> t;t>0;--t){
v.clear();// for input and create tree
v2.clear();// for output and calculate compressing volume
in >> n ;
v.assign(n,0);
v2.assign(n,0);
for (int i=0; i<n ; ++i){
v[i]=new node;
v2[i]=new node;
in >> v[i]->harf >> v[i]->tekrar ;
}
int bits1= ceil( log((double)n )/ log((double)2 ) );
int sum1 = 0 ;//regular coding
for (int i=0 ; i<n ; ++i)
sum1 += bits1 * v[i]->tekrar;
node *p;
while ( v.size() > 1 ){
sort1();
p=new node;
p->l = v[0];
p->r = v[1];
p->tekrar = v[0]->tekrar + v[1]->tekrar;
v[0]=p;
v.erase(v.begin() + 1);
}
peymayesh(v[0]);
sort2();
for(int i=0;i<v2.size();++i){
cout << v2[i]->harf[0] << ":";
v2[i]->harf.erase(v2[i]->harf.begin());
cout << v2[i]->harf <<" ";
}
cout<< endl;
int sum2=0;//Huffman coding
for (int i=0;i<n;++i)
sum2+= v2[i]->harf.size() * v2[i]->tekrar;
cout << "regular coding: " << sum1
<< " ,with Huffman coding: " << sum2 << endl << endl;
}
return 0;
}
اگه کسی سوالی داشته باشه خوشحال میشم بتونم کمکش کنم
ورودی اش هم مثلا اینجوریه :
code:2
6
a 30
b 10
c 7
d 8
e 40
f 14
6
a 2000
b 1000
c 500
d 500
e 2000
f 2100
اين نامه توسط ملایی در 1 شنبه Jun 17, 2007 5:37 pm ويرايش شده است.
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 17 Jun 2007 03:02 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
اینم فروشنده دوره گرد به روش تقسیم و حل
فقط نمی دونم آرایه ای میشه به وسیله ی اون مسیر رو پیدا کرد چه جوری درست میشه.
code:#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
vector <int > s;
int **L,n;
int travelling ( int i ){
if (s.empty())
return L[i][0];
int result = 100000 , distiaj , tempj;
for (int j=0;j<s.size();++j){
tempj = s[j];
s.erase(s.begin() + j);
distiaj = L[i][tempj] + travelling (tempj);
s.insert(s.begin() + j , tempj );
if ( distiaj < result )
result = distiaj;
}
return result;
}
int main(){
ifstream in("forushande_dore_gard.in");
in >> n;
L=new int *[n];
for (int i=0;i<n;++i){
L[i]=new int [n];
for (int j=0;j<n;++j)
in >> L[i][j];
}
for (int i=1;i<n;++i)
s.push_back(i);
int minsum = travelling (0);
cout << "value of min path is: " << minsum << endl;
return 0;
}
اینم ورودی اش :
code:4
0 10 15 20
5 0 9 10
6 13 0 12
8 8 9 0
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 17 Jun 2007 05:36 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 ضرب string ای !
با این code میشه اعداد خیلی بزرگ رو خیلی سریع در هم ضرب کرد . اعدادی که تو هیچ متغیر عددی جا نمیشن
code:
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
string zarb(string &a,string &b){
reverse (a.begin(),a.end());
reverse (b.begin(),b.end());
string ans;
ans.insert(0,1000,'0'); // inja mishe andazeye javab ro taghir dad
int c=0;
int i,j;
for (i=0;i<a.size();++i){
for (j=0;j<b.size();++j){
if ( (ans[i+j]-48 + ((a[i]-48)*(b[j]-48)+c)%10) > 9 ){
int carry=(ans[i+j]-48 + ((a[i]-48)*(b[j]-48)+c)%10) /10;
ans[i+j] = (ans[i+j]-48 + ((a[i]-48)*(b[j]-48)+c)%10) %10 + 48;
c=((a[i]-48)*(b[j]-48)+c)/10;
int k=1;
ans[i+j+k]+=carry;
while ( ans[i+j+k]>'9' ){
carry = (ans[i+j+k] - '0')/10;
ans[i+j+k]= (ans[i+j+k]-48)%10 +'0';
++k;
ans[i+j+k]+=carry;
}
}
else{
ans[i+j] += ((a[i]-48)*(b[j]-48)+c)%10;
c = ((a[i]-48)*(b[j]-48)+c ) /10;
}
}
ans[i+j]+=c;
c=0;
}
for (int i=ans.size()-1;i>0;--i)
if (ans[i]=='0')
ans.erase (ans.end()-1);
else
break;
reverse (ans.begin(),ans.end());
return ans;
}
int main() {
string s1,s2;
cin >> s1 >> s2;
cout << zarb(s1,s2) << endl;
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 30 Sep 2007 02:43 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
این کد ماله پیدا کردن نقطه ی تقاطع دو پاره خطه !
اگه تقاطع نداشته باشن false بر میگردونه .
برای بررسی این که تقاطع دارن یه نه یه روش راحت تر و سریع تر هم هست ( بعدا میگم )
code:
bool intersect(point m,point b,point n,point c,point &O){ //4noghte az do pare khat midin mige barkhord daran ya na
double y1=m.y-b.y ,x1=m.x-b.x;
double y2=n.y-c.y ,x2=n.x-c.x;
double xO , yO;
if (x1==0){
xO=b.x;
yO=y2/x2*(xO-c.x)+c.y;
}
else if (x2==0){
xO=c.x;
yO=y1/x1*(xO-b.x)+b.y;
}
else {
xO=( b.x*y1/x1 - c.x*y2/x2 + c.y-b.y ) * x1*x2/(x2*y1-x1*y2);
yO=y1/x1*(xO-b.x)+b.y;
}
O.x=xO;
O.y=yO;
if (xO>=min(m.x,b.x)-eps && xO<=max(m.x,b.x)+eps && xO>=min(n.x,c.x)-eps && xO<=max(n.x,c.x)+eps &&
yO>=min(m.y,b.y)-eps && yO<=max(m.y,b.y)+eps && yO>=min(n.y,c.y)-eps && yO<=max(n.y,c.y)+eps )
return true;
return false;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 08 Oct 2007 02:14 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 فاکتوریل و ترکیب
code:unsigned __int64 fact[19]={0};
__int64 factorial(__int64 a){
if ( fact[a]!=0 )
return fact [a];
if (a==1){
fact[a]=1;
return 1;
}
fact[a] = a * factorial(a-1);
return fact[a];
}
این هم ماله ترکیب :
code:unsigned __int64 tark[19][19]={{0,0}};
__int64 tarkib ( __int64 n , __int64 i){
if ( tark[n][i]!= 0 )
return tark [n][i];
if ( n==i || i==0 ){
tark[n][i]=1;
return 1;
}
tark[n][i] = tarkib( n-1 , i ) + tarkib ( n-1 , i-1 );
return tark[n][i];
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 12 Oct 2007 08:24 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 تبدیل مبنای 10 به 2 و همچنین محاسبه مساحت با کمک ضرب خارجی
یه تابع بازگشتی نسبتا ساده و تیدیل مبنا :
code:void tentotwo(int a){
if (a/2==0){
cout<<a; return;
}
int x=a%2; a/=2;
tentotwo(a);
cout<<x;
}
میشه به جای cout عدد ها رو بزاریم تو به آرایه و اگه لازم شد reverse اش کنیم.
اینم مال مساحت :
فقط نقطه های داخل آرایه (vector ) باید مرتب باشن ( یا ساعتگرد یا پادساعت گرد )
code:
struct point {
double x,y;
point(){}
point (double a,double b){
x=a,y=b;
}
};
double ex_mult(point &a,point &b){
return ((a.x*b.y)-(a.y*b.x));
}
for (int j=0;j<v[i].size();++j)
sum += ex_mult( v[i] , v[(i+1)%v.size()] );
cout << abs(sum)/2 << endl;
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 13 Oct 2007 09:16 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 جدا کردن نقاط بیرونی
فرض کنید تو vector<complex<double> > v یه عالمه ( مثلا500 تا ) نقطه ی تصادفی داریم .
اولین کار اینه که نقطه ها رو تو vector مرتب کنیم , با این تابع : code:
bool cmd(complex<double> &p,complex<double> &q){
if (p.real() != q.real())
return p.real()<q.real();
return p.imag()<q.imag();
}
بعد از یه همچین کدی میشه برای قرار دادن نقطه های بیرونی تو وکتور ans استفاده کرد.
توضیح این که هر نقطه ای که انتخاب میشه با چرخوندن دستگاه مختصات , بقیه ی نقطه ها رو تو ربع اول و چهارم قرار میده. ( اولین نقطه لازم نیست یعنی چون ما اومدیم سمت چپ و پایین نقطه رو گذاشتیم اول v خودش اتومات این حالت رو داره )
code:sort ( v.begin() , v.end() ,cmd );
vector < complex<double> > ans;
//complex <double > cur_p,first = v[0];
ans.push_back(v[0]);
double ang,temp_ang,rotate=0;
int min_point=n-1,cnt_choice=0;
while (min_point!=0){
ang=1.0e+8;
for (int i=0;i<n;++i){//temp_ang == #INF ?
temp_ang=atan2( v[i].imag() - ans[cnt_choice].imag() , v[i].real() - ans[cnt_choice].real() );
if (temp_ang==0)
continue;
temp_ang-=rotate;
while (temp_ang < -PI/2 )
temp_ang+=2*PI;
if (temp_ang < ang ){
min_point = i;
ang=temp_ang;
}
}
ans.push_back (v[min_point]);
++cnt_choice;
rotate += PI/2 + ang ;//important !
if (rotate >= 2*PI )
rotate -= 2*PI;
}
در ضمن این نطقه ها رو به صورت پادساعت گرد داخل ans می زاره که خودش یک مزیت هست
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 18 Oct 2007 12:37 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 maxmimum network flow
این مربوط به الگوریتم های گراف میشه . لینک زیر رو حتما نگاه کنین خوب توضیح داده :
http://en.wikipedia.org/wiki/Edmonds-Karp_algorithm
با تشکر از هادی مشیدی
code:
/**
* //////////////////
* // MAXIMUM FLOW //
* //////////////////
*
* This file is part of my library of algorithms found here:
* http://www.palmcommander.com:8081/tools/
* LICENSE:
* http://www.palmcommander.com:8081/tools/LICENSE.html
* Copyright (c) 2004
* Contact author:
* igor at cs.ubc.ca
**/
/****************
* Maximum flow * (Ford-Fulkerson on an adjacency matrix)
****************
* Takes a weighted directed graph of edge capacities as an adjacency
* matrix 'cap' and returns the maximum flow from s to t.
*
* PARAMETERS:
* - cap (global): adjacency matrix where cap[u][v] is the capacity
* of the edge u->v. cap[u][v] is 0 for non-existent edges.
* - n: the number of vertices ([0, n-1] are considered as vertices).
* - s: source vertex.
* - t: sink.
* RETURNS:
* - the flow
* - fnet contains the flow network. Careful: both fnet[u][v] and
* fnet[v][u] could be positive. Take the difference.
* - prev contains the minimum cut. If prev[v] == -1, then v is not
* reachable from s; otherwise, it is reachable.
* DETAILS:
* FIELD TESTING:
* - Valladolid 10330: Power Transmission
* - Valladolid 653: Crimewave
* - Valladolid 753: A Plug for UNIX
* - Valladolid 10511: Councilling
* - Valladolid 820: Internet Bandwidth
* - Valladolid 10779: Collector's Problem
* #include <string.h>
* #include <queue>
**/
#include <string.h>
// the maximum number of vertices
#define NN 1024
// adjacency matrix (fill this up)
int cap[NN][NN];
// flow network
int fnet[NN][NN];
// BFS
int q[NN], qf, qb, prev[NN];
int fordFulkerson( int n, int s, int t )
{
// init the flow network
memset( fnet, 0, sizeof( fnet ) );
int flow = 0;
while( true )
{
// find an augmenting path
memset( prev, -1, sizeof( prev ) );
qf = qb = 0;
prev[q[qb++] = s] = -2;
while( qb > qf && prev[t] == -1 )
for( int u = q[qf++], v = 0; v < n; v++ )
if( prev[v] == -1 && fnet[u][v] - fnet[v][u] < cap[u][v] )
prev[q[qb++] = v] = u;
// see if we're done
if( prev[t] == -1 ) break;
// get the bottleneck capacity
int bot = 0x7FFFFFFF;
for( int v = t, u = prev[v]; u >= 0; v = u, u = prev[v] )
bot <?= cap[u][v] - fnet[u][v] + fnet[v][u];
// update the flow network
for( int v = t, u = prev[v]; u >= 0; v = u, u = prev[v] )
fnet[u][v] += bot;
flow += bot;
}
return flow;
}
//----------------- EXAMPLE USAGE -----------------
int main()
{
memset( cap, 0, sizeof( cap ) );
int numVertices = 100;
// ... fill up cap with existing edges.
// if the edge u->v has capacity 6, set cap[u][v] = 6.
cout << fordFulkerson( numVertices, s, t ) << endl;
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 23 Oct 2007 11:08 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 ترکیب , ب م م
میاد ترکیب رو برای اعداد بزرگ محاسبه می کنه , gcd هم داره.
code:unsigned __int64 gcd(unsigned __int64 a,unsigned __int64 b) {
if (a%b==0) return b; else return gcd(b,a%b);
}
void Divbygcd(unsigned __int64& a,unsigned __int64& b) {
unsigned __int64 g=gcd(a,b);
a/=g;
b/=g;
}
unsigned __int64 C(int n,unsigned int k){
unsigned __int64 numerator=1,denominator=1,toMul,toDiv,i;
if (k>n/2) k=n-k; /* use smaller k */
for (i=k;i;i--) {
toMul=n-k+i;
toDiv=i;
Divbygcd(toMul,toDiv); /* always divide before multiply */
Divbygcd(numerator,toDiv);
Divbygcd(toMul,denominator);
numerator*=toMul;
denominator*=toDiv;
}
return numerator/denominator;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 01 Nov 2007 04:16 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1121
محل سكونت: مشهد-هاشمیه
|
 الگوریتم بهینه محاسبه یک مقدار خاص در تابع فیبوناتچی
اینم به روش خیلی سریع تر با زمان لگاریتمی
code:
int Fib(int n)
{
int i,h,j,k,t;
i = h = 1;
j = k = 0;
while (n > 0)
{
if (n%2 == 1)
{
t = j*h;
j = i*h + j*k + t;
i = i*k + t;
}
t = h*h;
h = 2*k*h + t;
k = k*k + t;
n = n/2;
}
return j;
}
منبع : codecorona.com
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 28 Nov 2007 12:44 am |
|
 |
|
|
امروز : جمعه Jan 09, 2009 5:19 am | تمام ساعات و تاريخها بر حسب 4.5+ ساعت گرينويچ مي باشد
|
صفحه 1 از 2
|
|