امروز : جمعه Jul 03, 2009 9:20 am
ديدن موضوع قبلي | ديدن موضوع بعدي
 |
صفحه 1 از 3
|
| نويسنده |
پيغام |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
 بررسی سوالات مسابقات تمرینی ACM
8Puzzle
این یه مدل اینجوری داشت :
code:1 2 3
4 5 6
7 8 0
بعد یه وردودی اینجوری مثلا می داد , می گفت با چند تا حرکت عمودی یا افقی ( که 0 رو با بقیه حروف جابجا کنی ) میشه به مدل رسید :
code:1 2 3
4 5 0
6 7 8
الان خروجی باید 13 باشه.
اینم کدش :
code:#include <iostream>
#include <fstream>
#include <string>
#include <ctime>
#include <map>
#include <queue>
using namespace std;
map <string , int> m;
queue < string > qs;
queue < int > qc,qd;
//struct state{
// string s;
// int c,d;
//};
//queue <state> q;
void puzzle(int cur,string s){
if (m.find(s)==m.end()){
m[s]=qd.front();
if (cur-1>=0 && cur-1<=8 && cur!=6 && cur!=3){
string temp=s;
{char t=temp[cur]; temp[cur]=temp[cur-1]; temp[cur-1]=t; }
qc.push(cur-1);
qd.push(m[s]+1);
qs.push(temp);
}
if (cur+1>=0 && cur+1<=8 && cur!=2 && cur!=5){
string temp=s;
{char t=temp[cur]; temp[cur]=temp[cur+1]; temp[cur+1]=t; }
qc.push(cur+1);
qd.push(m[s]+1);
qs.push(temp);
}
if (cur-3>=0 && cur-3<=8){
string temp=s;
{char t=temp[cur]; temp[cur]=temp[cur-3]; temp[cur-3]=t; }
qc.push(cur-3);
qs.push(temp);
qd.push(m[s]+1);
}
if (cur+3>=0 && cur+3<=8){
string temp=s;
{char t=temp[cur]; temp[cur]=temp[cur+3]; temp[cur+3]=t; }
qc.push(cur+3);
qs.push(temp);
qd.push(m[s]+1);
}
}
qs.pop();
qc.pop();
qd.pop();
}
int main () {
clock_t cl=clock();
ifstream in ("8puzzle.in");
qs.push("123456780");
qc.push(8);
qd.push(0);
while (!qs.empty())
puzzle(qc.front(),qs.front());
int t;
for (in >> t;t>0;--t){
string s,temp;
for (int i=0;i<3;++i)
for (int j=0;j<3;++j){
in >> temp;
if (temp=="-1")
temp="0";
s+=temp;
}
if (m.find(s)==m.end())
cout << "Impossible" << endl;
else
cout << m[s] << endl;
}
cout << "time: " << (clock()-cl) * 0.001 << endl;
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 02 Oct 2007 04:49 pm |
|
 |
|
|
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
 colored_cubes
صورت سوال رو کسی داره بده بزارم.3 صفحه بود
میاد معکب اول رو ثابت در نظر می گیره و بقیه رو به 24 حالت ممکن می چرخونه (change )هر دفعه هم که مثلا مکعب دوم یه چرخش داشته باشه میره سومی رو 24 حالتش رو امنحان می کنه , هر دفعه هم همه مکعب ها رو مقایسه می کنه و می نیمم رو بدست میاره.
code:#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
struct mokaab{
// string s[6][40];
vector <string> s;
int operator != (mokaab &p) const{
return (s[0]!=p.s[0] || s[1]!=p.s[1] || s[2]!=p.s[2] ||
s[4]!=p.s[4] || s[4]!=p.s[4] || s[5]!=p.s[5] );
}
void operator = (mokaab &p) {
for (int i=0;i<6;++i)
s[i]=p.s[i];
}
mokaab (){
s.resize(6);
}
};
mokaab a[4];
int n;
void to_right(mokaab &a){
string temp=a.s[1-1];
a.s[1-1]=a.s[2-1];a.s[2-1]=a.s[6-1];a.s[6-1]=a.s[5-1];a.s[5-1]=temp;
}
void right2down(mokaab &a){
string temp=a.s[4-1];
a.s[4-1]=a.s[2-1];a.s[2-1]=a.s[3-1];a.s[3-1]=a.s[5-1];a.s[5-1]=temp;
}
void straight2down(mokaab &a){
string temp=a.s[4-1];
a.s[4-1]=a.s[1-1];a.s[1-1]=a.s[3-1];a.s[3-1]=a.s[6-1];a.s[6-1]=temp;
}
void to_left(mokaab &a){
string temp=a.s[1-1];
a.s[1-1]=a.s[5-1];a.s[5-1]=a.s[6-1];a.s[6-1]=a.s[2-1];a.s[2-1]=temp;
}
set <string> myset;
int moghayese (){
int cnt=0;
for (int i=0;i<6;++i){
int j;
myset.clear();
for (j=0;j<n;++j)
myset.insert(a[j].s[i]);
cnt+=myset.size()-1;
}
return cnt;
}
int change (int d){
mokaab temp=a[d],temp2;
int ans=10000;
do{
right2down(a[d]);
temp2=a[d];
do{
to_right(a[d]);
ans = min ( moghayese() , ans);
if (d+1<n)
ans=min (ans , change(d+1));
}while (a[d]!=temp2);
}while (a[d]!=temp);
straight2down(a[d]);
temp2=a[d];
do{
to_right(a[d]);
ans = min ( moghayese() , ans);
if (d+1<n)
ans=min (ans , change(d+1));
}while (a[d]!=temp2);
straight2down(a[d]);
straight2down(a[d]);
temp2=a[d];
do{
to_right(a[d]);
ans = min ( moghayese() , ans);
if (d+1<n)
ans=min (ans , change(d+1));
}while (a[d]!=temp2);
return ans;
}
int main(){
ifstream in("colored_cubes.in");
in >> n;
while (n!=0){
for (int i=0;i<n;++i)
for (int j=0;j<6;++j)
in >> a[i].s[j];
if (n==1){
cout << "0" << endl;
continue;
}
int sum=change(1);
cout << sum << endl;
in >> n;
}
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 02 Oct 2007 05:35 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
 newyork2005: the cubic end
یه عدد n رقمی ورودی میده . باید کوچکترین عددی رو پیدا کنی که اگه بتوان 3 برسه n رقم اولش بشه همون ورودی !!
code:
sample input:
4//tedade test case ha
123
1234567
435621
9876543213
sample outout:
974
2835223
786941
2916344917
اینم کد من :
code:#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
using namespace std;
string zarb(string &a,string &b,int n){
string ans;
ans.insert(0,150,'0');
int c=0;
int i,j;
for (i=0;i<n/*a.size()*/;++i){
for (j=0;j<n /*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;
}
reverse (ans.begin(),ans.end()); // time limit
for (int i=0;i<ans.size()-n;++i)
if (ans[i]=='0')
ans.erase (0,1) , --i;
else
break;
reverse (ans.begin(),ans.end());
ans.erase(ans.begin()+n ,ans.end());
return ans;
}
bool cube(string &ans,int n,string s,int i){
string c1=zarb(ans,ans,n);
string c2=zarb(c1,ans,n);
s.erase(s.begin()+n ,s.end());
if (c2[i]==s[i])
return true;
return false;
}
int main () {
ifstream in ("c.in");
int T;
in >> T;
while (T--) {
string s;
in >> s;
reverse (s.begin(),s.end());
string ans;
ans.insert(0,s.size(),'0');
for (int i=1;i<=s.size();++i)
if (ans!=s)
while (!cube(ans,s.size(),s,i-1))
++ans[i-1];
else
break;
reverse (ans.begin() , ans.end() );
for (int i=0;i<ans.size()-1;++i)
if (ans[i]=='0')
ans.erase (0,1) , --i;
else
break;
cout << ans << endl;
}
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 02 Oct 2007 05:43 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
سوال های جمعه ( دور 14 ام بود فکر کنم )
ورودی و خروجی هاش هم هست
مال سال 99 دانشگاه waterloo بود.
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 06 Oct 2007 04:18 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
 F: Biorhythms
جواب سوال F رو که حل کردیم( من و آقای سردار) می زارم . راستی کسی سوال H رو حل کرد ؟ یا کدش رو بزاره یا یه توضیحی در مورد جوابش بده.
code:
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <map>
#include <queue>
using namespace std;
int main(){
ifstream in("f.in");
int cnt=0;
while (1){
int p,e,i,d;
in >> p >> e >> i >> d;
++cnt;
int ans=i;
if (p==-1)
break;
// if (p==0 || e==0 || i
while (ans < 21252) {
ans+=33;
if (ans > d && (ans-p)%23==0 && (ans-e)%28==0 )
break;
}
cout << "Case " << cnt << ": the next triple peak occurs in ";
if ( ans > 21252 )
cout << 21252-d ;
else
cout << ans-d;
cout << " days." << endl;
}
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 06 Oct 2007 10:08 pm |
|
 |
امین ابوئی
تاريخ عضويت: 12 May 2007
تعداد ارسالها: 3
|
 New York 2005 - Problem F -Stacking Cylinders
code:#include <iostream>
#include <iomanip>
#include <vector>
#include <string>
#include <map>
#include <cmath>
#include <deque>
#include <set>
#include <algorithm>
#include <ctime>
#include <bitset>
#include <fstream>
using namespace std;
pair<double,double> calculate(pair<double,double> , pair<double,double>);
int main()
{
ifstream fin ("f.in");
typedef pair <double,double> point;
int T;
fin>>T;
string temp;
getline(fin,temp);
for(int t=1;t<=T;t++)
{
int N;
fin>>N;
vector <point> coor;
for(int i=0;i<N;i++)
{
double temp=0;
fin>>temp;
temp+=1e-9;
coor.push_back(point(temp,1));
}
double x=(coor.at(coor.size()-1).first+coor.at(0).first)/2;
for(int pass=1;pass<N;pass++)
{
vector <point> tempory;
for(int i=0;i<coor.size()-1;i++)
{
point up=calculate(coor.at(i),coor.at(i+1));
up.first+=1e-6;
up.second+=1e-6;
tempory.push_back(up);
}
coor=tempory;
}
cout<<fixed<<setprecision(4)<<t<<':'<<" "<<x<<" "<<coor.at(0).second<<endl;
}
return 0;
}
pair<double,double> calculate (pair<double,double> co1 , pair<double,double> co2)
{
typedef pair <double,double> point;
const double PI=4*atan(1.00);
double deltaY=co2.second-co1.second;
double deltaX=co2.first-co1.first;
double alpha=deltaY/deltaX; //shib khat
point midle=point(((co2.first+co1.first)/2),((co2.second+co1.second)/2)); // noghteye miyani va markaze dayere
double lenght=sqrt((deltaX*deltaX)+(deltaY*deltaY))/2; // andazi miyane
double radius=sqrt(4-(lenght*lenght));
double temp1=sqrt((radius*radius)/(1+(alpha*alpha)));
double temp2=-sqrt((radius*radius)/(1+(alpha*alpha)));
double Y1=temp1+midle.second;
double Y2=temp2+midle.second;
double X1=(temp2*alpha)+midle.first;
double X2=(temp1*alpha)+midle.first;
if(Y1>Y2)
{
point back=point(X1,Y1);
return back;
}
else
{
point back=point(X2,Y2);
return back;
}
}
من توی این سوال برای بدست آوردن مختصه X دچار مشکل هستم و همانطور که خور سوال گفته آن را بدست می آورم ولی به دلیل ممیز شناور و گرد کردن آن دچار مشکل میشوم ، اگر کسی راهی بلدی لطفا من رو راهنمایی کند .
|
| 07 Oct 2007 01:44 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
اگه یادت باشه کد من هم دقیقا واسه همین AC نخورد . فکر کنم تو صورت سوال یه چیزی کمه , نمی دونم !
وقتی خودش گفته از چه راهی واسه X برین , واسه چی از راه خودش که می ریم غلط میشه !؟
شاید من این رو نمی فهمم : The X coordinate of topmost cylinders to 4 decimal palce
اینم کدم :
code:#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <iomanip>
#define pow2(x) ((x)*(x))
#define eps 1e-8
using namespace std;
struct point{
double x,y;
};
int main() {
int T;
ifstream in("StakingCylinders.in");
in >> T;
for (int t=0;t<T;++t){
int n;
in >> n;
vector < vector <point> > v;
vector <point> temp;
point p; p.y=1;
for (int i=0;i<n;++i){
in >> p.x;
temp.push_back(p);
}
v.push_back(temp);
for (int i=0;i<n-1;++i){
temp.clear();
for (int j=0;j<v[i].size()-1;++j){
p.x= (v[i][j].x + v[i][j+1].x)/2;
p.y= sqrt(4-pow2(v[i][j+1].x-p.x)) + v[i][j+1].y;
temp.push_back(p);
}
v.push_back(temp);
}
cout << t<<": " << fixed << setprecision(4) << v[n-1][0].x << " " << fixed << setprecision(4)<< v[n-1][0].y << endl;
}
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 07 Oct 2007 02:03 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
 problem C: A Plug For Unix
یه تابع بازگشتی جالب باید بزنی :
code:#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <map>
#include <queue>
#include <string>
using namespace std;
int cnt=0;
int rec (vector<string> &b,string &dev,vector<pair<string> > &t, int o,vector <bool> &flag){
if (o>cnt)
return 0;
for (int i=0;i<t.size();++i)
if (t[i].first==dev && !flag[i]){
flag[i]=true;
if ( binary_search(b.begin(),b.end(),t[i].second) ){
for(int i=0;i<t>> n;
vector <string> b(n);
for (int i=0;i<n>> b[i];
sort (b.begin(),b.end());
in >> k;
string temp ,temp1;
vector<string> d;
for (int i=0;i<k>> temp;
in >> temp1;
int j;
for (j=0;j<b.size();++j)
if (temp1==b[j])
break;
if (j==b.size())
d.push_back(temp1);
else
b.erase(b.begin()+j);
}
// cout << "che fayde : " << b.size() << "and " << n <<endl>> m;
vector <pair<string> >t(m);
for (int i=0;i<m>> t[i].first >> t[i].second;
while ( cnt <= t.size() ){
++cnt;
for (int i=0;i<d.size();++i) {
vector <bool> flag(t.size(),false);
if (rec (b,d[i],t,1,flag)){
d.erase(d.begin()+i);
--i;
}
}
}
cout << d.size() << endl;
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 12 Oct 2007 12:16 am |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
اینم سوال ها و ورودی خروجی های دور 16 ام:
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 12 Oct 2007 09:23 pm |
|
 |
ملایی
مدیر انجمن برنامه نویسی
تاريخ عضويت: 27 Feb 2006
تعداد ارسالها: 1122
محل سكونت: مشهد-هاشمیه
|
 problem E: Expression
ورودی اش postfix هست خروجی اش من در آوردی !! ( سوال رو بخونین )
اینم کدش : ( فقط تابع بازگشتی اش خیلی باحاله .
code:#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
#include <map>
#include <string>
using namespace std;
vector <int> dig;
int rec(int i,const string &s){
if (s[i-1]>='a'){
++dig[i-1];
return i-1;
}
else
{
dig[i-1]++;
return rec ( rec(i-1,s),s );
}
}
int main(){
ifstream in("e.in");
int t;
in >> t;
while (t--){
string s;
in >> s;
dig.assign(s.size(),0);
for (int i=0;i<s.size();++i) {
if (s[i] >='A' && s[i]<='Z')
rec ( rec (i,s), s );
}
string ans;
bool flag=true;
for (int i=0;flag;++i){
flag=false;
for (int j=0;j<s.size();++j)
if (dig[j]==i){
ans.insert(ans.size(),1,s[j]);
s.erase(s.begin()+j);
dig.erase(dig.begin()+j);
--j;
flag=true;
}
}
reverse (ans.begin(),ans.end());
cout <<ans << endl;
}
return 0;
}
_________________ آگه 50000 نفر هم به یک چیز اشتباه اعتقاد داشته باشن , اون چیز هنوز هم اشتباه است !
محمـــــــــــــــــــــدرضا . اگر گه گاهی سراغتون افتاد , خوشحال میشم : http://360.yahoo.com/molla652003
سوابق کاریه من :
معاد
روزی یک حدیث
ACM_sharif
طراحی الگوریتم
در اعماق بی کران
Art Of Programming
عکس های بچه ها
نماز
معرفی سایت های مفید
شعر های دوران مهدکودک
موفقیت
موسیقی
|
| 17 Oct 2007 12:58 pm |
|
 |
Saradar
تاريخ عضويت: 07 Apr 2007
تعداد ارسالها: 80
|
 Problem A:Annoying painting tool
بر خلاف ظاهرش خيلي آسون بود...فقط كافيه از بالاترين و چپ ترين عنصر شروع كنيم...همين
code:
#include"iostream"
#include"string.h"
#include"stdio.h"
#include"fstream"
using namespace std;
int main()
{
ifstream cin("01.in");
while(1){
int r,n,m,c;
__int64 cnt=0;
char s[200][200],temp[200][200];
cin>>n>>m>>r>>c;
if(!n&&!m&&!r&&!c)
break;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
s[i][j]='0';
for(int i=0;i<n;i++)
cin>>temp[i];
bool flag=true;
for(int j=0;j<m&&flag;j++)
for(int i=0;i<n;i++)
if(s[i][j]!=temp[i][j])
{
cnt++;
int l1,l2;
l1=i;
l2=j;
if(n-i<r)
l1=i-r;
if(m-j<c)
l2=j-c;
if(l2>=0&&l1>=0)
for(int k1=l2;k1<j+c;k1++)
for(int k=l1;k<i+r;k++)
{
if(s[k][k1]=='1')
s[k][k1]='0';
else
s[k][k1]='1';
}
else
{
flag=false;
break;
}
}
for(int i=0;i<n&&flag;i++)
for(int j=0;j<m&&flag;j++)
if(temp[i][j]!=s[i][j])
{
flag=false;
break;
}
if(flag)
cout<<cnt;
else
cout<<"-1";
cout<<endl;
}
return 0;
}
|
| 19 Oct 2007 10:59 pm |
|
 |
|
|
امروز : جمعه Jul 03, 2009 9:20 am | تمام ساعات و تاريخها بر حسب 4.5+ ساعت گرينويچ مي باشد
|
صفحه 1 از 3
|
|