1. 程式人生 > >7/24

7/24

spa har nbsp mon else ios chan end pan

//八皇後
#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