少ない脳みそをひねって何とか制限時間内に2問目100%解答可能なプログラムができたようです・・・
用意された入力データはこなせているようですがそれ以外はどうだか分かりません・・・
13日に書いた問1のプログラムも正常に処理してくれるようです。


//情報オリンピック 2008年度 本選 問2
#include
#include
int main(void)
{
FILE *fp; //ファイルポインタ宣言
clock_t start = clock(); //処理時間計測開始
//データ入力用変数宣言
int i,j,k=1,l,max=0,tmp=0,a_cnt,b_cnt;
char a[4001],b[4001],filename[256];
//ファイルを開く
scanf("%s",&filename[0]); fp=fopen(filename,"r");
//ファイル内容 読込 //文字列の場合
fscanf(fp,"%s",&a[0]);
fscanf(fp,"%s",&b[0]);
for(a_cnt=0;a[a_cnt]!='\0';a_cnt++){} //文字数カウント
for(b_cnt=0;b[b_cnt]!='\0';b_cnt++){} //文字数カウント
fclose(fp); //ファイルを閉じる

for(i=0;a_cnt>i;i++){
for(j=0;b_cnt>j;j++){
for(k=0;a[i+k]==b[j+k]&&a_cnt>i+k && b_cnt>j+k;k++){}
for(l=0;a[i-l]==b[j-l]&&i-l>=0 && j-l>=0;l++){}
if(l+k-1>max){max=l+k-1;}
if(k>tmp){tmp=k;}
if(k>0){j=j+k-1;}
}
}
printf("%d\n",max);//処理確認用出力
printf("%.3f\n",(double)(clock()-start)/CLOCKS_PER_SEC);//処理時間出力
fp=fopen("output.txt","w"); //ファイルを開く
fprintf(fp,"%d\n",max); //ファイル内容 書出
fclose(fp); //ファイルを閉じる
return 0;
}
何もアルゴリズム関連の特殊な技法は用いていないと思います。
思いつくまま書いたプログラムなので詳しい方が見ればつっこみどころ満載だと思われます・・・
他の問題はいったい何年かかるやら^-^;