×
解除綁定,重新設定系統帳號的密碼
您的系統帳號 ID:
您的系統帳號:
您的帳號暱稱:
設定新密碼:
設定新密碼:
×
請輸入要加入的「課程代碼」
請向開設課程的使用者索取「課程代碼」
分類題庫
解題動態
排行榜
討論區
競賽區
登入
註冊
發表新討論
#39209: 請問為什麼會一直TLE
betey20232
(佛仔)
學校 : 元智大學
編號 : 249420
×
傳送站內訊息
傳給:
主題:
內容:
來源 : [1.200.5.233]
最後登入時間 :
2024-08-29 14:18:21
b592.
The Tower of Hanoi
| From: [1.200.243.113] | 發表日期 : 2024-01-23 09:50
#include <iostream>
#include <cstring>
using namespace std;
char g(char a,char b){
if(a=='1'&&b=='2'||a=='2'&&b=='1')
return '3';
else if(a=='1'&&b=='3'||a=='3'&&b=='1')
return '2';
else
return '1';
}
void f(char a[], char b[],int p, int& num){
bool x=0;
char c[p];
int i;
for(i=p-1;i>=0;i--){
if(a[i]!=b[i]){
x=1;
break;}}
if(i==0)
return;
if(x==0){
num--;
return;
}
bool flag=0;
for(int j=i-1;j>=0;j--){
if(a[j]!=g(a[i],b[i]))
flag=1;}
if(flag==1){
for(int l=p-1;l>=i;l--)
c[l]=a[l];
for(int j=i-1;j>=0;j--)
c[j]=g(a[i],b[i]);
f(a,c,p,num);
f(c,b,p,num);
}
if(flag==0){
for(int k=0;k<p;k++){
c[k]=a[k];
}
c[i]=b[i];
f(c,b,p,num);
}
num++;
}
int p;
int main()
{
while(cin>>p&&p){
char beg[p];
char ove[p];
for(int i=0;i<p;i++){
cin>>beg[i];
}
for(int i=0;i<p;i++){
cin>>ove[i];
}
int num=0;
f(beg,ove,p,num);
cout<<num+1<<endl;}
return 0;
}
是演算法有問題嗎...還是說是EOF沒控制好?
ZeroJudge Forum