zoukankan      html  css  js  c++  java
  • 递归与回溯 作业

    poj1664

    代码

    #include<stdio.h>
    int cal(int m,int n)
    {
    	if(m==0||n==1)return 1;
    	if(n>m){
    		return cal(m,n-1);
    	}
    	else{
    		return cal(m-n,n)+cal(m,n-1);
    	}
    }
    int main()
    {
    	int n,m;
    	int t;
    	scanf("%d",&t);
    	while(t)
    	{
    		t--;
    		scanf("%d%d",&m,&n);
    		printf("%d
    ",cal(m,n));
    	}
    }
    

    poj2013

    思路:第一个直接输出,第二个放到最后面,第三个放到最前面,第四个从后往前放,第五个从前往后放...按照名字个数为偶数和奇数分开解答。

    代码

    #include<iostream>
    #include<vector>
    #include<string> 
    using namespace std;
    void printlistodd(vector<string> sl)
    {
    	vector<string> sl0;
    	if(sl.size()==1)
    	{
    		cout<<sl[0]<<endl;
    	}
    	else if (sl.size()%2==1){
    		sl0.push_back(sl[0]);
    		sl.erase(sl.begin());
    		printlistodd(sl0);
    		printlistodd(sl);
    	}
    	else{
    		sl0.push_back(sl[0]);
    		sl.erase(sl.begin());
    		printlistodd(sl);
    		printlistodd(sl0);
    	}
    }
    void printlisteven(vector<string> sl)
    {
    	vector<string> sl0;
    	if(sl.size()==1)
    	{
    		cout<<sl[0]<<endl;
    	}
    	else if (sl.size()%2==0){
    		sl0.push_back(sl[0]);
    		sl.erase(sl.begin());
    		printlisteven(sl0);
    		printlisteven(sl);
    	}
    	else{
    		sl0.push_back(sl[0]);
    		sl.erase(sl.begin());
    		printlisteven(sl);
    		printlisteven(sl0);
    	}
    }
    void printfirst(vector<string> sl)
    {
    	int l = sl.size();
    	cout<<sl[0]<<endl;
    	sl.erase(sl.begin());
    	if(l==1) return;
    	else if(l%2==1)printlistodd(sl);
    	else printlisteven(sl); 
    }
    
    int main()
    {
    	int t,n,n_max;
    	n=0;
    	vector<string> st;
    	string tmp;
    	char s[30];
    		while(scanf("%d",&t)&&t){
    			n++;
    			st.clear();
    			while(t){
    				t--;
    				scanf("%s",&s);
    				tmp=string(s);
    				st.push_back(tmp);
    		}
    		printf("SET %d
    ",n);
    		printfirst(st);
    	}
    
    	return 0;
    }
    

    poj1979

    注意读取单个字符的话要记得读去每一行的回车。

    代码

    #include<stdio.h>
    #include<string.h>
    int map[21][21];
    int visited[21][21];
    int W,H;
    int ans;
    void move(int x,int y){
    	if(x<0||x>H-1||y<0||y>W-1||map[x][y]=='#'||visited[x][y]){
    		//printf("???");
    		return ;
    	}
    	else{
    		//printf("哈?"); 
    		visited[x][y]=1;
    		ans++;
    	}
    	move(x-1,y);
    	move(x+1,y);
    	move(x,y-1);
    	move(x,y+1);
    	
    }
    int main()
    {
    	int i,j;
    	int x,y;
    	while(scanf("%d%d",&W,&H)&&W&&H){
    		memset(map,0,sizeof(map));
    		memset(visited,0,sizeof(visited));
    		ans = 0;
    		for(j=0;j<H;j++){
    			getchar(); //读走回车 
    			for(i=0;i<W;i++){
    				scanf("%c",&map[j][i]);
    				//printf("j=%d,i=%d ",j,i);
    				if(map[j][i]=='@'){
    					x = j;
    					y = i;
    					//printf("x=%d,y=%d",x,y);
    				}
    			}
    		}
    		move(x,y);
    		printf("%d
    ",ans);
    	} 
    	return 0;
    } 
    
  • 相关阅读:
    ORA-04091错误原因与解决方法
    Vue中过滤器及自定义插件
    解决 React 中的 input 输入框在中文输入法下的 bug
    总结18个webpack插件
    使用Vue Composition API写出清晰、可扩展的表单
    实现微前端需要了解的 Vue Genesis 渲染器
    React 监听页面滚动,界面动态显示
    漫谈受控与非受控组件
    vue的完整版和运行时版的区别
    vue中利用provide和inject实现页面刷新(无白屏)重载组件
  • 原文地址:https://www.cnblogs.com/hardcoreYutian/p/13406045.html
Copyright © 2011-2022 走看看