El número 1 puede ser destructivo para tu controlador. Si utilizaría salidas push-pull para las columnas y las filas como entradas, al presionar dos teclas en la misma fila cortocircuitará la fuente de alimentación a través de las salidas del microcontrolador. Si las salidas del microcontrolador pueden configurarse como drenaje abierto, entonces no hay problema, pero las salidas también deben tener resistencias de pull-up. Entonces, básicamente tienes el número 2, pero con los pull-ups integrados.
Número 2. La misma historia si usarías las filas como salidas. Usar las columnas como salidas tiene más sentido, ya que R1-R3 evita un cortocircuito de las salidas. Tenga en cuenta que un nivel de salida bajo verá la resistencia serie / pull-up como un divisor de voltaje, por lo que la entrada será de 0.1 Vcc, aunque eso generalmente no es un problema.
El número 3 evita el divisor, pero las resistencias en las entradas no sirven para ninguna función. Una variante sin el resistor de serie servirá.
Entonces 1) puede ser un absoluto no-no. 3) es un poco mejor que 2) porque no tiene el divisor de voltaje, pero puede prescindir de la resistencia en serie.