锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Time Limit:1000MS Memory Limit:32768K
1 2 3 3 8 10 100 210 7 900 1 0 0銆0銆0
yes no no yes
================================================================================
鎻愪氦娌掓湁鎴愬姛
#include <cstdlib>
#include <iostream>
using namespace std;
#define MAX_ROW 50
string out[MAX_ROW];
int num[MAX_ROW][3];
int index=0;
void output()

{
for(int i=0;i<index;++i)
{
cout<<out[i].c_str();
cout<<endl;
}
}
bool dfs(float number,int n)

{
if(n>=3)
return number==0;
if(dfs(number+num[index][n],n+1)) return true;
if(dfs(number-num[index][n],n+1)) return true;
if(dfs(number*num[index][n],n+1)) return true;
if(dfs(number/num[index][n],n+1)) return true;
return false;
}
int main(int argc, char *argv[])

{
while(1)
{
for(int i=0;i<3;++i)
cin>>num[index][i];
if(num[index][0]==0&&
num[index][1]==0&&
num[index][2]==0)
{
break;
}
if(dfs(num[index][0],1)) out[index]="yes";
else out[index]="no";
index++;
}
output();
system("PAUSE");
return 0;
}
5 2 18 13
10 8568
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
static char * num;
static int m,n;
static int sum=0;
void dfs(string subtree,int level)

{
int i=0;
if(level==n)
{
//cout<<subtree<<endl;
sum++;
return;
}
if(subtree.size()==0) i=0;
else
{
for(i=0;i<m;i++)
if(subtree[subtree.size()-1]==num[i])
break;
i++;
}
for(;i<m;i++)
{
dfs(subtree+num[i],level+1);
}
}
int main(int argc, char *argv[])

{
while(scanf("%d%d",&m,&n)!=EOF)
{
if(m<=20)
if(n<=m) 
{
sum=0;
num=new char[m];
for(int i=0;i<m;++i)
num[i]=i+'1';
dfs("",0);
cout<<sum<<endl;
delete num;
}
}
//system("PAUSE");
return 0;
}
5 1 0
11 18 25 2 9 10 12 19 21 3 4 6 13 20 22 23 5 7 14 16 17 24 1 8 15 1
#include <iostream>
using namespace std;
#define MAX 30

static int data[30][30];
void solve(int n)

{
int i;
int _x=1,_y=1;
int index=1;
int x=n-1,y=n/2;
for( i=0;i<n;i++)
{
for(int j=0;j<n;j++)
data[i][j]=0;
}
while(index<=n*n)
{
data[x][y]=index;
int newx=x+_x;
int newy=y+_y;
if(newx>=n) newx=0;
if(newy>=n) newy=0;
if(data[newx][newy]!=0)
{
x--;
}
else
{
x=newx;y=newy;
}
index++;
}


for( i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("%3d",data[i][j]);
cout<<endl;
}
cout<<endl;
}
int main(int argc, char* argv[])

{
int input;
while(cin>>input&&input!=0)
{
if(input%2==0) continue;
if(input>0&&input<30)
solve(input);
}
return 0;
}
5 4 16 27 0
0 0 2 2 4 2 3 3

/**//*
** Author :flysky
** date :2008-01-20
** Description: http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1002
*/
#include <iostream>
#include <math.h>
using namespace std;
#define MAX 50
void solve(int number)

{
int k=sqrt(number);
for(int i=k;i>1;--i)
{
int j=2;
bool loop=true;
while(loop)
{
if(pow(i,j)==number)
{
cout<<i<<" "<<j<<endl;
return;
}
else if(pow(i,j)>number)
loop=false;
else
j++;
}
}
cout<<0<<" "<<0<<endl;
}
int main()

{
int input[MAX];
int len=0;
while((cin>>input[len])&&input[len]!=0)
{
if(input[len]<0||input[len]>pow(10,8))
continue;
len++;
}
for(int i=0;i<len;++i)
solve(input[i]);
return 0;
}瀵嗙爜鎴幏
Time Limit:1000MS Memory Limit:1024K
ABBA 12ABBA A ABAKK 51233214 abaaab
4 4 1 3 6 5

/**//*
** °ÝÃD´yz:http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1001
** Author: flysky
** date: 2008-01-19 ª¯§¾¤u§@°V½m¤é
*/
#include <iostream>
#include <string>
using namespace std;

int solve(string &input)

{
int len=input.size();
int passlen=1;
for(int i=0;i<len;i++)
{
int k=i;
int p2=0;
bool same=false;
for(int j=len-1;j>i;j--)
{
if(input[k]==input[j])
{
if(!same)
p2=j;
k++;
same=true;
}
else
{
same=false;
k=i;
}
}
if(passlen<p2-i+1) passlen=p2-i+1;
}
return passlen;
}
int main(int argc, char *argv[])

{
string input;
while(1)
{
cin>>input;
cout<<solve(input)<<endl;
}

return 0;
}
#include <iostream>
#include <string>
using namespace std;

int solve(char *input,int len)

{
int passlen=1;
for(int i=0;i<len;i++)
{
int k=i;
int p2=0;
bool same=false;
for(int j=len-1;j>i;j--)
{
if(input[k]==input[j])
{
same=true;
p2=j;
for(int j1=j-1,i1=k+1;j1>i1;j1--,i1++)
if(input[i1]!=input[j1])
{
same=false;
break;
}
}
else
{
same=false;
k=i;
}
if(same)
{
if(passlen<p2-i+1) passlen=p2-i+1;
//i=p2+1;
break;
}
}
}
return passlen;
}
int main(int argc, char *argv[])

{
char input[100];
while(scanf("%s",input)!=EOF)
{
cout<<solve(input,strlen(input))<<endl;
}

return 0;
}