首页 > 代码库 > 7/24

7/24

//八皇后
#include<iostream>
using namespace std个;
#define SIZE 8
char data[SIZE][SIZE];
int ans=0;
//bool check(int row,int col){
//    for(int i=0;i<row;i++){
//        if(data[i][col]==‘*‘)return 0;
//        for(int j=0;j<SIZE;j++){
//            if(i-row==j-col ||i-row==col-j){}
//        }
//    }
//}
void DFS(int row){
    if(row>=8){
        ans++;
        cout<<ans<<endl;
        for(int i=0;i<SIZE;i++){
            for(int j=0;j<SIZE;j++){
                cout<<data[i][j]<< ;

            }
            cout<<endl;
        }
        cout<<"--------------------------------------------"<<endl;
    }

    for(int col=0;col<SIZE;col++){
        int p=1;
        for(int i=0;i<row;i++){
            if(data[i][col]==*)p=0;
            for(int j=0;j<SIZE;j++){
                if((row-i==col-j|| row-i==j-col) && data[i][j]==*){
                    p=0;
                }
            }
        }
       if(p==1){
            data[row][col]=*;
            DFS(row+1);
            data[row][col]=#;
        }
    }    
}
int main(){
    for(int i=0;i<SIZE;i++){
            for(int j=0;j<SIZE;j++){
                data[i][j]=#;    
        }
    }
    DFS(0);
    return 0;
}
//油田
#include<iostream>
using namespace std;
#define SIZE 100
char data[SIZE][SIZE];
int n,m;
int ans=0;
int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1}};
void DFS(int x,int y){
    data[x][y]=*;
    for(int i=0;i<8;i++){
        int newx=x+dir[i][0];
        int newy=y+dir[i][1];
        if( newx>=0 &&  newx<n && newy>=0 && newy<m && data[newx][newy]==@){
            DFS(newx,newy);
        }
        
    }
}
int main(){
    //freopen("input.txt","r",stdin);
    while(1){
        cin>>n>>m;
        if(n==0 || m==0)break;
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    cin>>data[i][j];
                }
            }
        /*    for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    cout<<data[i][j]<<‘ ‘;
                }
                cout<<endl;
            }*/
            for(int i=0;i<n;i++){
                for(int j=0;j<m;j++){
                    if(data[i][j]==@){
                        DFS(i,j);
                        ans++;
                    }
                }
            }
            cout<<ans<<endl;
            ans=0;
    }
    return 0;
}
//#include<iostream>
//using namespace std;
//#define SIZE 30
//int map[SIZE][SIZE];
//int color[SIZE];
//int n;
//int mincolor=1000;
//bool ok(int x,int c){
//    for(int i=0;i<n;i++){
//        if(map[x][i]==1 && c==color[i]){
//            return false;//相邻节点颜色相同
//
//        }
//        return true;
//    }
//}
//void DFS(int x ,int curcolor){
//    if(x>=n){
//        mincolor=mincolor>curcolor?curcolor:mincolor;
//        return;
//    }
//    int c=color[x];
//    for(c=1;c<=curcolor;++c){
//        if(ok(x,c)){
//            DFS(x+1,curcolor);
//        }
//    }
//    DFS(x+1,curcolor+1);
//}
//int main(){
//    while(cin>>n && n){
//        char str[SIZE];
//        for(int i=0;i<n;i++){
//            scanf("%s",str);
//            for(int j=2;str[j]!=‘\0‘;j++){
//                map[str[0]-‘A‘][str[j]-‘A‘]=1;
//            }
//        }    
//        color[0]=1;
//        DFS(1,1);
//        if(mincolor==1)cout<<"1 channel needed."<<endl;
//        else cout<<mincolor<<‘ ‘<<"channels needed."<<endl;
//        mincolor=1000;
//        
//    }
//}
黑白棋子
//#include<iostream>
//using namespace std;
//#define SIZE 30
//int map[SIZE][SIZE];
//int color[SIZE];
//int n;
//int mincolor=1000;
//bool ok(int x,int c){
//    for(int i=0;i<n;i++){
//        if(map[x][i]==1 && c==color[i]){
//            return false;//相邻节点颜色相同
//
//        }
//        return true;
//    }
//}
//void DFS(int x ,int curcolor){
//    if(x>=n){
//        mincolor=mincolor>curcolor?curcolor:mincolor;
//        return;
//    }
//    int c=color[x];
//    for(c=1;c<=curcolor;++c){
//        if(ok(x,c)){
//            DFS(x+1,curcolor);
//        }
//    }
//    DFS(x+1,curcolor+1);
//}
//int main(){
//    while(cin>>n && n){
//        char str[SIZE];
//        for(int i=0;i<n;i++){
//            scanf("%s",str);
//            for(int j=2;str[j]!=‘\0‘;j++){
//                map[str[0]-‘A‘][str[j]-‘A‘]=1;
//            }
//        }    
//        color[0]=1;
//        DFS(1,1);
//        if(mincolor==1)cout<<"1 channel needed."<<endl;
//        else cout<<mincolor<<‘ ‘<<"channels needed."<<endl;
//        mincolor=1000;
//        
//    }
//}
//工厂材料
#include<iostream>
using namespace std;
#define SIZE 7
int data[SIZE][SIZE];
int minMoney=1000;
int k[SIZE];
int flag[SIZE];
void DFS(int col,int money){
    if(col==7){
        for(int i=0;i<SIZE;i++){
            if(flag[i]>=1){
            money-=data[i][0]*(flag[i]-1);
            }
        }
        minMoney=(minMoney>money)?money:minMoney;
        return;
    }
        for(int i=0;i<7;i++){
        if(data[i][col]==1){
            
            flag[i]++;
            money+=data[i][0];
            DFS(col+1,money);
            money-=data[i][0];
            
            flag[i]--;
        }    
    }
    
}
int main(){
    freopen("input2.txt","r",stdin);
    for(int i=0;i<7;i++){
        for(int j=0;j<7;j++){
            cin>>data[i][j];
        }
    }
    for(int i=0;i<7;i++){
        for(int j=0;j<7;j++){
            cout<<data[i][j]<< ;
        }
        cout<<endl;
    }
    DFS(1,0);
    cout<<minMoney;
return 0;
}

 

7/24