- ارسال ها
- 143
- لایک ها
- 79
- امتیاز
- 0
سلام .
از اونجایی که بعضی وقتها Accept کردن کد می تونه اشک آدم رو در بیاره و کلا باعث پیر شدن آدم بشه , باید یاد بگیرید که چطور می شه با کد کلنجار رفت و سرانجام پیروز شد !
انشاالله اگه این نکات رو رعایت کنید کد هاتون First time Ac می شن
1. نوشتن Debug info
نوشتن Debug info اولین کاری یه که باید بعد از Wrong خوردن برنامه تون بکنید . این کار به این صورت است که در قسمت های مختلف برنامه تون , مقادیر متغیر ها رو چک می کنید (بوسیله چاپ کردن اون ها) و می فهمید که برنامه تون تا اونجا درست کار کرده یا خیر .
برای اینکه این مقادیر چاپ شده از یه جریان (Stream) دیگه خارج بشن و با اطلاعاتی که برنامه تون چاپ می کنه ترکیب نشن , موقع نوشتن Debug info به جای cout << ..... می نویسیم cerr << .... که این cerr همون خروجی error ماست . (نوشتن cerr هزار تا خوبی داره , حتما برای نوشتن debug info , از cerr استفاده کنید)
مثلا این یه تیکه از یه برنامه ای بود که با نوشتن cerr مشکلش رفع شد و Accept شد
[/I][/I][/I][/I][/I]
از اونجایی که بعضی وقتها Accept کردن کد می تونه اشک آدم رو در بیاره و کلا باعث پیر شدن آدم بشه , باید یاد بگیرید که چطور می شه با کد کلنجار رفت و سرانجام پیروز شد !
انشاالله اگه این نکات رو رعایت کنید کد هاتون First time Ac می شن
1. نوشتن Debug info
نوشتن Debug info اولین کاری یه که باید بعد از Wrong خوردن برنامه تون بکنید . این کار به این صورت است که در قسمت های مختلف برنامه تون , مقادیر متغیر ها رو چک می کنید (بوسیله چاپ کردن اون ها) و می فهمید که برنامه تون تا اونجا درست کار کرده یا خیر .
برای اینکه این مقادیر چاپ شده از یه جریان (Stream) دیگه خارج بشن و با اطلاعاتی که برنامه تون چاپ می کنه ترکیب نشن , موقع نوشتن Debug info به جای cout << ..... می نویسیم cerr << .... که این cerr همون خروجی error ماست . (نوشتن cerr هزار تا خوبی داره , حتما برای نوشتن debug info , از cerr استفاده کنید)
مثلا این یه تیکه از یه برنامه ای بود که با نوشتن cerr مشکلش رفع شد و Accept شد
کد
int main() {
cin >> n >> m;
gen(1);
// for (int i = 0; i < (1<<m); i++)
// for (int j = 0; j < (1<<m); j++)
// cerr << "s["<<B(i)<<"]["<<B(j)<<"] : " << s[I][j] << endl;
d[0][(1<<m) - 1] = 1;
for (int i = 0; i < n; i++)
for (int j = 0; j < (1<<m); j++)
if (d[I][j])
{
int temp = j ^ ( (1<<m) - 1);
// cerr << "HERE for j : " << B(j) << " and temp : " << B(temp) << endl;
for (int k = 0; k < (1<<m); k++)
d[i+1][k] += d[I][j] * s[temp][k];
}
// for (int i = 0; i <= n; i++)
// for (int j = 0; j < (1<<m); j++)
// if (d[I][j])
// cerr << "d["<<i<<"]["<<B(j)<<"] : " << d[I][j] << endl;
cout << d[n][(1<<m) - 1] << endl;
return 0;
}