2016/4/28所学大致总结

来源:互联网 发布:怎么成为算法工程师 编辑:程序博客网 时间:2024/05/01 18:06

关于:删除字符,填方格,java作业3

删除字符

这里写图片描述
- 此题目我用java写的,因为要输出的是子串,用数组存的话,可能会需要变数组的大小


代码块

代码块语法遵循标准markdown代码,例如:

package oj;import java.io.*;import java.util.Scanner;import java.util.ArrayList;import java.util.*;import java.util.NoSuchElementException;class deletechar {    public static void main(String[] args)throws java.util.NoSuchElementException    {        Scanner scan=new Scanner(System.in);        List<Character> list=new ArrayList<Character>();        int i=0;        String s;        Character c='a';        while ((s=scan.nextLine())!=null)        {          String[] str=s.split("");         for(Character a:str[0].toCharArray()){             c=a;             for(Character b:str[1].toCharArray()){             if(b.equals(a)) i++;         }         }         if(i==0)list.add(c);        }        for(Character d:list){        System.out.println(d);        }    }}

其中有几个难点:
- 导入import java.util.Scanner 之后才可以创建Scanner的对象,从而从键盘得到输入
- 类Scanner 的方法:scanner.nextLine();scanner.h
- 把一个字符串用空格分开并存入字符串数组中:String[] str=s.spilt(“s”)
- 逻辑方面就是两个for循环,逐个比较两个字符串了。


填方格

这里写图片描述

  • 这里用的主要是深度优先算法,DFS是个递归函数。
#include<stdio.h>#include<stdlib.h>static int count=0;static int lace[3][3]={0};int HZ(int a ,int b) { int c=1;  do{if(b==1) return 1;c=a%b;a=b;b=c;}while(c!=0);  return 0; } int check(int a,int h,int z){//a代表要填入的数,h,z代表要填入的位置     for(int i=0;i<3;i++){        for(int j=0;j<3;j++){            if(a==lace[i][j]&&(h-1>=0&&!HZ(a,lace[h-1][z]))&&(z-1>=0&&!HZ(a,lace[h][z-1])))return 0;         }     }     return 1; } int hasNext(int &x,int &y){    if(x==2&&y==2)return 0;    else{        if(++y<=2) x=x;        else {        x++;        y=0;     }     return 1;    } } void dfs(int x ,int y,int a[9] ){    if(x==2&&y==2){        count++;     dfs(0,0,a);}    for(int i=0;i<9;i++){        if(check(a[i],x,y))        {         lace[x][y]=a[i];break;}     }        if(hasNext(x,y)){         dfs(x,y,a);    }     return; }int main(){    int a[9]={1,1,1,1,1,1,1,1,1};    dfs(0,0,a);    printf("%d",count);    return 0;   } 

java作业这里写图片描述

0 0