| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:搜索也没过,哪位有数据吗In Reply To:搜索也没过,哪位有数据吗 Posted by:kin2141539 at 2008-09-04 22:40:12 > #include<iostream>
> #include<cmath>
> using namespace std;
>
> #define N 4
>
> int minCount = 100000;
> int map[N][N];
>
> bool isFinish();
>
> void output(){
> int i,j;
> for(i=0;i<N;i++){
> for(j=0;j<N;j++){
> cout<<map[i][j];
> }
> cout<<endl;
> }
> }
>
> void roll(int i){
> int column,row,pianyi_x,pianyi_y;
> column = i % N;
> row = i / N;
> // system("pause");
> // printf("(%d,%d)\n",row, column);
> // cout<<"("<<i<<")"<<endl;
> pianyi_x = row;
> pianyi_y = column ;
> if(pianyi_x>=0 && pianyi_x<N && pianyi_y>=0 && pianyi_y<N){
> map[pianyi_x][pianyi_y] = ~map[pianyi_x][pianyi_y];
> }
>
>
> pianyi_x = row - 1;
> pianyi_y = column ;
> if(pianyi_x>=0 && pianyi_x<N && pianyi_y>=0 && pianyi_y<N){
> map[pianyi_x][pianyi_y] = ~map[pianyi_x][pianyi_y];
> }
>
> pianyi_x = row + 1;
> pianyi_y = column;
> if(pianyi_x>=0 && pianyi_x<N && pianyi_y>=0 && pianyi_y<N){
> map[pianyi_x][pianyi_y] = ~map[pianyi_x][pianyi_y];
> }
>
> pianyi_x = row ;
> pianyi_y = column - 1;
> if(pianyi_x>=0 && pianyi_x<N && pianyi_y>=0 && pianyi_y<N){
> map[pianyi_x][pianyi_y] = ~map[pianyi_x][pianyi_y];
> }
>
> pianyi_x = row ;
> pianyi_y = column + 1;
> if(pianyi_x>=0 && pianyi_x<N && pianyi_y>=0 && pianyi_y<N){
> map[pianyi_x][pianyi_y] = ~map[pianyi_x][pianyi_y];
> }
>
> // output();
> }
>
> int changeOne(int start,int cnt){
> int i,column,row,pianyi_x,pianyi_y;
> for(i=start; i< N*N; i++){
> roll(i);
> cnt++;
> if(isFinish()==true){
> if(minCount>cnt) minCount = cnt;
> }
> else{
> cnt = changeOne(i+1,cnt);
> }
> roll(i);
> cnt--;
> }
> return cnt;
> }
>
> bool isFinish(){
> int i,j;
> for(i=0; i<N; ++i){
> for(j=0; j<N; ++j){
> if( map[i][j]==0 ) return false;
> }
> }
> return true;
> }
>
> int main()
> {
> int i,j;
> char aChar;
> for(i = 0;i < N ; i++ ){
>
> for(j = 0 ; j < N ; j++){
> cin>>aChar;
> if( aChar=='b'){
> map[i][j] = -1;
> }
> else {
> map[i][j] = 0;
> }
> }
> }//input over
> // output();
> if( isFinish()== true)
> printf("0\n");
> else{
> // cout<<changeOne(0,0)<<endl;
> changeOne(0,0);
> if(minCount!=100000) printf("%d",minCount);
> else printf("Impossible");
> }
> system("pause");
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator