• {暴力}


    补一些基础简单题purple7

    UVA - 725

     1 #include <cstdio>
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 
     5 bool check(int x,int y)
     6 {
     7     int a[10];
     8     memset(a,0,sizeof(a));
     9     if(x<10000||y<10000) a[0]=1;  //
    10     if(x<10000&&y<10000) return false;   //
    11     while(x)
    12     {
    13         int temp=x%10;
    14         if(a[temp]) return false;
    15         a[temp]=1;
    16         x/=10;
    17     }
    18     while(y)
    19     {
    20         int temp=y%10;
    21         if(a[temp]) return false;
    22         a[temp]=1;
    23         y/=10;
    24     }
    25 
    26     return true;
    27 }
    28 
    29 int main()
    30 {
    31     int n;
    32     int flag=0;
    33     while(scanf("%d",&n)&&n)
    34     {
    35         if(flag)
    36         {
    37             puts("");
    38         }
    39         else flag=1;
    40         int ok=0;
    41         for(int i=1234;;i++)
    42         {
    43             int y=i*n;
    44             if(y>98765) break;
    45 
    46             if(check(i,y)) ok=1,printf("%d / %05d = %d
    ",y,i,n);
    47         }
    48         if(!ok) printf("There are no solutions for %d.
    ",n);
    49     }
    50 }
    View Code

    子集生成:

     1 #include <cstdio>
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 //子集生成lrjp188
     5 
     6 //增量法
     7 void print_subset_dxdy(int n,int *A,int cur)
     8 {
     9     for(int i=0;i<cur;i++) printf("%d ",A[i]);  //打印当前集合
    10     puts("");
    11     int s=cur ? A[cur-1]+1 : 0; // 获取当前元素的最小可能值
    12     for(int i=s;i<n;i++)
    13     {
    14         A[cur]=i;
    15         print_subset_dxdy(n,A,cur+1); //递归构造子集
    16     }
    17 }
    18 //位向量法
    19 void print_subset_vector(int n,int *B,int cur)
    20 {
    21     if(cur==n)
    22     {
    23         for(int i=0;i<n;i++) if(B[i]) printf("%d ",i);
    24         puts("");
    25         return;
    26     }
    27     B[cur]=1;  //选第cur个人元素
    28     print_subset_vector(n,B,cur+1);
    29     B[cur]=0;   //不选第cur个元素
    30     print_subset_vector(n,B,cur+1);
    31 }
    32 //二进制法
    33 void print_subset_binary(int n,int s)
    34 {
    35     for(int i=0;i<n;i++)
    36         if(s&(1<<i)) printf("%d ",i);
    37     puts("");
    38 }
    39 
    40 int A[1010];
    41 int main()
    42 {
    43     int n;
    44     while(scanf("%d",&n)&&n) {
    45         printf("增量法:
    ");
    46         print_subset_dxdy(n,A,0);
    47         puts("位向量法:");
    48         print_subset_vector(n,A,0);
    49         puts("二进制法:");
    50         for(int i=0;i<(1<<n);i++) //枚举各子集所对应的的编码
    51             print_subset_binary(n,i);
    52     }
    53 }
    View Code
  • 相关阅读:
    团队博客——1
    团队博客3
    团队博客6
    团队博客2
    团队博客8
    团队博客4
    团队博客7
    安装“消息队列 (MSMQ)”
    服务端上传文件到共享目录
    数据库变成可疑状态
  • 原文地址:https://www.cnblogs.com/yijiull/p/7143698.html
Copyright © 2020-2023  润新知