1.火柴棒等式
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 const int match[10]={6,2,5,5,4,5,6,3,7,6}; 6 7 int n; 8 9 int merge(int x){ 10 int sum=0; 11 if(x==0)return 6; 12 while(x){ 13 sum+=match[x%10]; 14 x/=10; 15 } 16 return sum; 17 } 18 19 int main(){ 20 freopen("matches.in","r",stdin); 21 freopen("matches.out","w",stdout); 22 scanf("%d",&n); 23 int a,b,c,res=0; 24 n-=4; 25 for(a=0;a<=1000;a++) 26 for(b=0;b<=1000;b++) 27 { 28 c=a+b; 29 if(n==(merge(a)+merge(b)+merge(c))) 30 res++; 31 } 32 printf("%d",res); 33 return 0; 34 }
2.作业调度方案
1 #include <iostream> 2 #include <cstdio> 3 #include <queue> 4 #include <cstring> 5 using namespace std; 6 7 const int MaxN=21; 8 9 int n,m,cost[MaxN][MaxN]; 10 int machen[MaxN][MaxN]; 11 int d[MaxN*MaxN]; 12 int num[MaxN]; 13 bool ok[MaxN][MaxN*MaxN]; 14 int f[MaxN][MaxN]; 15 16 void readfile(){ 17 freopen("jsp.in","r",stdin); 18 freopen("jsp.out","w",stdout); 19 scanf("%d%d",&m,&n);//m个机器,n个工件数,m道工序 20 int i,j,x; 21 for(i=1;i<=m*n;i++)scanf("%d",&d[i]); 22 for(i=1;i<=n;i++) 23 for(j=1;j<=m;j++) 24 scanf("%d",&machen[i][j]);//第i个工件第j道工序应放入的机器号machen[i][j] 25 for(i=1;i<=n;i++) 26 for(j=1;j<=m;j++) 27 scanf("%d",&cost[i][j]);//第i件工件第j道工序花费的时间 28 } 29 30 void work(){ 31 int i,j,k,p,sss,ans=0; 32 bool flag=false; 33 memset(ok,false,sizeof(ok)); 34 for(i=1;i<=m*n;i++) 35 { 36 k=machen[d[i]][++num[d[i]]];//按照顺序第i件工件所应该放的机器号 37 p=f[d[i]][num[d[i]]-1]; 38 while(1){ 39 flag=false; 40 sss=p; 41 for(j=0;j<cost[d[i]][num[d[i]]];j++) 42 if(ok[k][p++]==true){ 43 flag=true; 44 break; 45 } 46 if(flag==false)break; 47 } 48 for(j=0;j<cost[d[i]][num[d[i]]];j++) 49 ok[k][sss+j]=true; 50 f[d[i]][num[d[i]]]=p; 51 ans=max(ans,p); 52 } 53 cout<<ans; 54 } 55 56 int main(){ 57 readfile(); 58 work(); 59 return 0; 60 }
3.引水入城
4.国王游戏
5.2^k进制数
6.聪明的质检员
7.国王游戏
8.斐波那契数列
9.Hankson的趣味题
10.同余方程
11.栈
原文:http://www.cnblogs.com/maopengsen/p/4282412.html