2016/4/28所学大致总结

关于:删除字符,填方格,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作业这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值